C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[71505] [질문] 스레드의 동작 상태 알아내는 방법.. (동작 중 또는 TEvent등에 의해 Waiting 되는 지)
땅주인 [heaven2] 3339 읽음    2014-07-01 14:41

개발환경: C++ Builder XE5
Thread를 운영하고 있습니다. TEvent를 통해 Main Thread와 Child Thread간 Event를 전달해 주고,
데이터는 Queue를 이용하여 연동하고 있습니다.
Main Thread에서 Queue에 데이터를 넣고, TEvent 객체(GAEvent)에 Signal을 주어 Child Thread가 실행되도록 하였습니다.
그런데, Main Threa에서 Event가 겹칠 경우(즉, Timer와 Socket에서 받은 Event가 거이 동시에 일어나는 경우 등..)
선후를 가려서 나중에 일어나는 Event는 기다리거나 Queue에 넣기만 해야 할 것 같은데,
그래서, Main Thread에서 TEvent로 Signal을 보낼 때 Child Thread 상태를 알았으면 하는데,
즉, TAThread의 상태가 TEvent 객체에서 기다리고 있는 지, 아니면, 다른 Event를 받아 실행 중에 있는 지를
판별하고 싶습니다.

즉, Thread의 상태(동작 중인 지 아니면 TEvent에서 Waiting하고 있는 지를 알 수가 있나요?

void __fastcall TAThread::Execute()
{
	TWaitResult Result;
	while ( FormMain->bContinue ) {
		Result = GAEvent->WaitFor(EVENT_WAIT_TIME);	// TEvent Object, 1 Second Wait 
		if ( Result == wrSignaled || Result == wrTimeout ) {
			while ( GAQueu->Count() ) {
				GASection->Enter();
				pMessage = (STMessage *) GAQueue->Pop();	// TQueue
				GASection->Leave();
				
				// do something .. 
				// it take 2~3 seconds... 
				
				delete pMessage;
			} // end of while 
		} else {
			// nothing to do..
		} // end of if 
	} // end of while 
}

+ -

관련 글 리스트
71505 [질문] 스레드의 동작 상태 알아내는 방법.. (동작 중 또는 TEvent등에 의해 Waiting 되는 지) 땅주인 3339 2014/07/01
71516     Re:[질문] 스레드의 동작 상태 알아내는 방법.. (동작 중 또는 TEvent등에 의해 Waiting 되는 지) 영악한녀석 3384 2014/07/07
71519         Thanks.. 땅주인 2996 2014/07/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.