|
Thread가 무한정 생성되는것이 아니기 때문에 일정갯수를 미리 생성해서 두고..
할일이 생기면 현재 놀고 있는 Thread에 일을 할당하고 실행시키고...
머 이렇게 하려고 합니다.
그런데 문제가 생기더군요..
TThread에 Suspended 라는 프로퍼티가 있긴 한데, 일을 끝내도 true로 설정되지 않아서 놀고 있는지 확인이 안됩니다.
Debug결과 TThread 의 Private변수인 FFinshed 는 true인데, FSuspended 는 false 이더군요...
private 변수인 FFinshed 에 접근하자니.. 안되고, Suspended 는 true로 설정되지 않구...
그래서 Thread에 일부러 Suspended = true; 로 코딩했으나 결과는 마찬가지더군요..
그래서 말인데요..
Thread가 현재 놀고 있는지 아님 먼 일을 하고 있는지 확인 하는 방법좀 알려주세요..
제가 한 코딩을 붙여넣겠습니다..
한수 부탁드립니다.... 그럼 이만..
---------------------------------------------------
Thread를 호출하는 쪽
---------------------------------------------------
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에 적절하게 했으면 루프를 빠져나간다.
}
---------------------------------------------------
Thread execute() 함수
---------------------------------------------------
void __fastcall XThread::Execute()
{
// 중간 생략....
Suspended = true;
}
|