환경: RAD Studio XE5 ( C++ Builder XE5)
Thread를 사용 중입니다. TEvent로 Event를 전달하고 동작하도록 하였습니다.
Thread를 종료할 때 Sleep()을 쓰는 것이 좀 깨림찍한데요..
아래의 코드에서 Thread 종료 시킬 때 Sleep()으로 잠시 기다리는 것이 의미가 있는 것인 지?
그리고, Thread 종료 후 delete Thread했는데, Thread가 while 루프를 빠지면서 자동 종료하면 굳이 delete를 하지 않아도 되는 것 아닌 지?
// Main Thread
m_bAniThread = true
m_pAniThread = new TAniThread(false);// not suspend
...
// Thread 사용할 때
ThreadQueue->Push(*pData); // Thread에서 사용할 데이터 Queue에 Push
GAniEvent->SetEvent(); // Thread에 Event를 전달...
..
//Thread 종료할 때..
m_bAniThread = false;
GAniEvent->SetEvent();
Sleep(200); // 스레드가 종료될 때까지 잠깐 기다림 => 이거 필요할까?
delete m_pAniThread; // 스레드가 자동 종료되면 이 코드가 필요할까요?
Thread의 실행 코드
// TAniThread
TWaitResult Result;
while ( FormMain->m_bAniThread ) {
Result = GAniEvent->WaitFor(1000); // Wait 1 second
...
}
// While 루프 탈출 후 Thread 종료..
|