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
[39569] Re:Thread 관련해서 몇가지 질문..
플그램시러시러 [] 1322 읽음    2005-03-18 18:49
초보빌더 님이 쓰신 글 :
: Thread를 사용하여 프로그램을 돌리는데요.
: Thread는 while(!Terminated)를 이용한 무한 루프가 돌아가고요.
: 무한루프 안에 Sleep() 함수를 사용합니다.
:
: 프로그램을 종료시
: Thread->Suspend() 상태에서
:
: Thread->Terminate();
: delete Thread;
: 를 이용하여 프로그램을 종료하기 전에 Thread를 종료하는데
: 종료시 프로그램이 바로 종료되는 것이 아니고 Thread안에 Sleep()이 다 끝나야 프로그램이 종료가 됩니다.
: 종료시 바로 종료하는 방법을 알고 싶습니다.
:
: 다른 하나는 Thread안의 무한루프 안에
: 외부에서 가져온 dll파일의 함수를 사용하는데
: 이 함수가 계속해서 네트웤에 어떤 신호를 주는 함수입니다.
:
: 프로그램에서 버튼을 이용하여 시작을 누르면 Thread->Resume();
: 중지를 누르면 Thread->Suspend();
: 종료를 누르면
: Thread->Terminate();
: delete Thread;
: 하는데요
: 시작 후 중지를 누르면 프로그램이 다운이 됩니다.
: 에러는 발생하지 않고 프로그램이 응답없음 상태가 됩니다.
: 이런 경우 어떤식으로해결을 해야할지.. (dll안의 함수는 제가 손을 댈수가 없고 어떤식으로 구현되는지도 정확히 모르겠습니다.)
:
: 정신이 없어서 질문이 횡설수설이라..
: 답변 부탁드리겠습니다.

음... 이건 어떨까요? Sleep() 대신에...
MS PSDK 속에 있는...
WaitForSingleObject가 더 나을지도 모르겠군요...
TimeOut을 Sleep(500) 이면 TimeOut에다가 500 주면 될겁니다...

그래서.. switch case를 이용해서..   WAIT_TIMEOUT이면... Sleep과 같이 처리...
아닌 경우에는... Terminate를 하는 겁니다... 핸들은 뮤텍스도, objects도 다 되니깐... 뭐 그쪽으 사용하시면 되겠구요...

+ -

관련 글 리스트
39551 Thread 관련해서 몇가지 질문.. 초보빌더 885 2005/03/17
39570     Re:Thread 관련해서 몇가지 질문.. 임문환 1315 2005/03/18
39569     Re:Thread 관련해서 몇가지 질문.. 플그램시러시러 1322 2005/03/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.