돌맹이 님이 쓰신 글 :
: Thread가 WaitForSingleObject()로 기다리다가, Event가 도착하면,
: 해당 기능을 동작하고 다시 WaitForSingleObject()로 기다리게 되어 있는데요..
:
: Thread 외부에서 해당 Thread가 WaitForSingleObject()에서 기다리고 있는 지,..
: 아니면 어떤 동작을 하고 있는 지를 파악할 수 있나요?
:
: 코드로 본다면
:
: ////////////////////////////////////////////////////////////////////
: // Thread body 부분
: TThread::Execute()
: {
: ....
: while ( 1 ) {
: ..
: WaitForSingleObject();
: ...
: // Do Something
: ...
: }
: ////////////////////////////////////////////////////////////////////
:
:
: ////////////////////////////////////////////////////////////////////
: // 사용할 때
: ////////////////////////////////////////////////////////////////////
: TThread *pThread = new TThread();
:
: if ( pThread->IsWorking() ) { // 일반 동작 중(기다리는 상태가 아님
: // Do Something
: } else { // WaitForSingleObject()에서 기다리는 상태
: // Do Something
: }
:
: 핵심은 pThread->IsWorking()함수를 쓸 수 있느냐 인 것입니다.
: 아니면 따로 만들어야 하나요?
:
:
NtQueryInfo라는 언도큐먼티드 API를 이용하면 원하는 정보를 얻을 수 있습니다.
언도큐먼티드 API지만 XT, WIN7, WIN8 에서 모두 동작합니다.
이 API는 제공하는 기능도 다양하고, 시스템 유틸리티에서 워낙 많이 사용되고 있기 때문에
MS가 차후 OS 버전에서 지원 안할리는 없을 겁니다.
|