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
[71831] Re:[질문] Thread의 깔끔한 종료 처리(Resource 유실 없이..)
장성호 [nasilso] 4560 읽음    2014-10-03 21:54
TThread에는 FreeOnTreminate라는 프로퍼티가 있습니다.
이 프로퍼티를  true로 해주시면 자동으로 자원이 해제됩니다.

TMyThread::Execute()
{
   this->FreeOnTerminate=true;

    while(Terminated == false) 
    {
         //작업.. 
    }
}


위와같이 FreeOnterminate가 ture로 되어있으면

아무때나 필요할때 thread가 종료되면(Execute함수 빠져나가면..) 자동으로 자원이 해제됩니다.

sleep해서 기다리다가  delete 해주고 할 필요가 없습니다.

그럼..




땅주인 님이 쓰신 글 :
: 환경: 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 종료.. 
: 

:

+ -

관련 글 리스트
71825 [질문] Thread의 깔끔한 종료 처리(Resource 유실 없이..) 땅주인 4246 2014/10/02
71831     Re:[질문] Thread의 깔끔한 종료 처리(Resource 유실 없이..) 장성호 4560 2014/10/03
71828     Re:[질문] Thread의 깔끔한 종료 처리(Resource 유실 없이..) 5834 2014/10/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.