Q&A

  • [급질문] Thread의 Suspend() 이 안되는 이유??
안녕하세요..



이필호입니다.



코딩중에.. 중요한 문제가 발생을 해서 이렇게 질문드립니다.



Thread를 약30개 정도 미리 생성해 놓고 thread의 Suspended 조건을 검사해서 조건에 맞는 놈에게 일을 할당해서 일을 시키는데요...



이게 Suspended에 값이 정확하게 설정되지 않아서 문제가 발생하네요..



호출하는 쪽 코딩



int i = 0;



while(true)

{

for(i = 0; i < MAX_THREAD_COUNT; i++)

{

if(FThread[i]->Suspended)

{

FThread[i]->Resume();

break;

}

}

if(i >= MAX_THREAD_COUNT)

continue; // 쉬는 Thread가 없으면 다시 루프를 돌고..

else

break; // 쉬는 Thread에 적절하게 했으면 루프를 빠져나간다.

}





이렇게 코딩 했구요..



스래드 안에는..



void __fastcall XThread::Execute()

{

// 중간생략......



this->Suspend();

}





이렇게 코딩했습니다.



소스는 빌더 소스이지만, 같은 VCL임으로 부디 노여워 하지 마시고 답해주세요..



정리하면 Thread에서 Suspend()를 했음에도 불구하고 Suspended가 true로 설정되지 않기 때문에 호출하는 쪽에서 노는 Thread를 캐치하지 못합니다.



부탁드립니다...





0  COMMENTS