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
[28946] Re:쓰레드를 쓰니까 메모장이 사라집니다.
김용수 [heredity] 1138 읽음    2004-03-01 20:50
안녕하세요. heredity입니다.
멀티쓰레드 프로그래밍에서 가장 중요한 것 중 하나는 쓰레드간 동기화 문제입니다.

만약 VCL 객체를 참조하는 코드가 Thread내에 존재한다면
이 부분은 Syschronize()로 동기화 시켜야 합니다.

그리고 CreateThread() API를 이용해서 Thread를 만들면 VCL간 동기화가
어려우니(추가적인 코드를 작성해야 합니다 ^^;) 가급적 C++ Builder에서
제공되는 TThread class를 사용하시기 바랍니다.

TThread에 대한 사용 방법은 C++ Builder 설치 Folder내
   ...\Examples\Apps\Threads
를 참조하거나 이 곳(볼랜드 포럼)에서 검색해 보시기 바랍니다.
행복하세요.

ps. 프로그램이 종료시 또는 수행중 오류를 발생하며 정지하는 이유중 하나는
동기화에 문제가 있어서 나는 경우가 많습니다.
------------------------------

바부팅이 님이 쓰신 글 :
: 안녕하세요?...
: 제가요..
: 한 프로그램에서 쓰레드를 세번 사용하는데요..
:
: 제일 처음 쓰레드를 썼을때는 아무 문제가 없었습니다.
: (버튼1을 누르면 쓰레드1을 호출)
:
: 그러다가 또 다른 쓰레드를 만들었습니다. (버튼2를 누르면 쓰레드2를 호출)
: 그랬는데.. 메모장이 사라졌습니다.
:
: 이번에 세번째 쓰레드를 썼는데요.. (버튼3 클릭)
: 그 버튼클릭 이벤트가 끝나면 역시 메모장이 없어집니다..
:
:
: 프로그램을 종료하니까..
:
: Project1.exe raised exception class EWin32Error with message 'Win32Error. Code:1400. 잘못된 창 핸들입니다'. Process stopped. Use Step or Run to continue;
:
: 이런 에러 메시지가 나오면서..
:
: forms.hpp  에 있는
: /* TCustomForm.Destroy */ inline __fastcall virtual ~TForm(void) { }
: 문장으로 가네요..

:
: 쓰레드와 관련된 코드는...
:
: void __fastcall TForm1::Button3Click(TObject *Sender)
: {
:   mStackThreadAA =
:     CreateThread(0,0,(unsigned long (__stdcall *)(void *))callRunStackAA,this,0,&mStackThreadIdAA) ;    // (윗줄이랑 이어진 문장임)
:
: }
:
: //-----------------------------------------
:
: NT callRunStackAA(LPVOID * p)
: {
:     TForm1 * winStack = (TForm1 *) p ;
:     winStack->bt_aa_testClick(Form1);
:     CloseHandle(winStack->mStackThread1);
: //-----------------------------------------
:
: HANDLE mStackThreadAA ;
: ULONG mStackThreadIdAA ;
: friend UINT callRunStackAA(LPVOID * p) ;
:
: //-----------------------------------------
:
: 이렇고요..
:
: 쓰레드를 사용하고 나서 뭐.. 해제 이런거 해줘야 되나요?..
:
:
: 프로그램 초보인데.. 쓰레드도 어디서 참고해서 사용한 것입니다.
: 메모장이 왜 사라지는지.. 어떻게 조치해야 되는지.. 혹시 알수 있나요?...
: 부탁드리겠습니다... 그럼 수고하세요..

+ -

관련 글 리스트
28916 쓰레드를 쓰니까 메모장이 사라집니다. 바부팅이 808 2004/02/26
28946     Re:쓰레드를 쓰니까 메모장이 사라집니다. 김용수 1138 2004/03/01
34526         Re:Re:쓰레드를 쓰니까 메모장이 사라집니다. 김용수 898 2004/03/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.