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
[14452] Re:[질문] 쓰레드 생성해서 메인 폼의 함수를 콜 했을때...
박지훈.임프 [cbuilder] 1001 읽음    2002-01-14 09:02
개념이 제대로 안서있으시다니 저도 어떻게 답변을 해드려야 할지 모르겠습니다. ^^;;
질문 내용도 좀 모호한 면이 있구요.
폼은 종료시키고 쓰레드도 함께 종료시킨다는 뜻이 맞는지요.

쓰레드의 외부에서 thread->Terminate(); 를 호출했다고 하더라도 그 아래의 코드를 무시하고
그냥 넘어가지는 않습니다. 쓰레드의 Terminate()를 호출했을 때 이 함수가 하는 역할은 너무나
단순해서, 단지 그 쓰레드의 Terminated 프로퍼티를 true로 세팅하기만 합니다.
이 값에 의해 실제로 쓰레드를 종료시키는 것은 쓰레드의 Execute() 함수의 역할입니다.
그래서 보통 Execute() 함수 내에선 while 문으로 Terminated 값을 순환적으로 계속 체크하도록
만듭니다.

그렇기 땜에, 만약 쓰레드 내에 블러킹되는 함수 호출 등이 있어서 Terminated 값을 체크하는 루틴으로
가기 전에 걸려서 실행이 중단되어 있다면, 폼에서 아무리 Terminate() 함수를 호출하더라도 쓰레드가
종료되지 않습니다. 또 이 경우에 강제로 쓰레드를 파괴시키더라도 실제로 Win32 쓰레드가 실행이 중단되는 않습니다. 쓰레드는 반드시 그 쓰레드의 Execute() 함수내에서만 실제로 종료됩니다.
(Execute() 함수가 실제 Win32 쓰레드이므로 당연하지요.)

이렇게 메인폼을 종료시켰는데도 쓰레드가 남아있다면, 그 프로세스는 완전히 종료되지 않고 유령처럼
남아있게 됩니다. 그러므로, 이런 현상을 피하려면, 메인폼에서 쓰레드의 Terminate()를 호출하거나
Terminated 를 true로 세팅했다고 해서 이 쓰레드가 실시간으로 바로 종료될 거라고 믿으면 안됩니다.
특히 쓰레드 내에 블러킹 루틴이 있다면 쓰레드는 종료되지 않습니다.

그럼...


Jun 님이 쓰신 글 :
: 안녕하세요....
:
: 쓰레드오브젝트를 하나 만들어서 메인 폼에서 그 쓰레드를 실행시켰습니다.
:
: 그 쓰레드에서는 다시 메인 폼의 어떤 특정 함수...test()라고 하기로 하죠...
:
: 쓰레드의 execute안에다가 Form1->test()라고 써주었습니다.
:
: 메인 폼의 test함수에서는
:
: while(stop)
: {
:
: ........
:
:
: }
:
: if(!stop)
:    thread->Terminate();
:
: 라는 식으로 작성해주었는데요...
:
: 이렇게 했을 경우에 쓰레드가 돌아가는 도중에 폼을 닫으려면 어떻게 해야 하나요..
:
: thread->Terminate()를 호출하면 그 즉시 저 함수 아래에 있는 코드들은 전부 무시하고 빠져나가는 것 같던데요....
:
: thread는 terminate가 호출되어도 그 즉시 종료되지 않다고 하던데....
:
: 쓰레드가 돌아가는 도중에 폼을 종료시켰을 경우의 처리는 어떤 식으로 해주는 지 궁금합니다....
:
: 아직 쓰레드에 대한 완전한 개념이 서질 않아 질문이 좀 난해한 것 같네요..죄송합니다....
:

+ -

관련 글 리스트
14419 [질문] 쓰레드 생성해서 메인 폼의 함수를 콜 했을때... Jun 795 2002/01/11
14452     Re:[질문] 쓰레드 생성해서 메인 폼의 함수를 콜 했을때... 박지훈.임프 1001 2002/01/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.