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
[12324] Re:Re:Re:[질문] 한쪽 쓰레드가 돌다 가 멈추는 경우가 자꾸 생깁니다.
[] 883 읽음    2001-11-05 11:05
TThread클래스에 있는 Synchronize함수는 두개의 쓰레드를 동기화 시키려는게 아니라
여러개의 쓰레드가 동시에 GUI 리소스에 접근하는것은 막기위해 사용하는것으로 압니다.
따라서 Synchronize함수 없이 화면 조작하는 루틴을 마구 사용한다면 어떤 문제가 발생할지
전혀 예측할수 없죠. ( 개인적으로 대부분은 별 문제없었지만 반드시 사용하고 있습니다. )

그러니까 기본이 불안한 상태에서 다음 버그를 잡는다는게 더 힘들다고 생각합니다.

제가 님과 같은 문제에 부딪힌다면...
일단 디버그 모드에서 프로그램을 돌려본후
정상 동작할때의 쓰레드 상태 (일시정지하고 Ctrl+Alt+T 누르면 나오죠. )를 확인해 보고
문제가 발생했을때의 쓰레드 상태들을 확인해서 쓰레드가 어떤 상태로 멈춰 있는것인지..
아니면 완전히 죽은것인지 확인할겁니다.

그 다음 쓰레드가 멈췄거나 죽은 부분을 알아내기위해
의심되는 부분( 짠 사람만 알겠죠?)에 적당히 메시지를 출력하게해서 ( 간단하게 Memo콤포 쓰면되죠)
어디서 멈췄는지를 찾을겁니다.
멈춘 부분만 알면 거기서 문제를 찾아내야 겠죠.

혹시 쓰레드가 죽은 것이라면 대부분은 메모리 문제일겁니다.
그렇다면 Code Guard 옵션 켜 놓고 한번 돌려보시면 메모리 누수되는 부분을 찾을 수 있을겁니다.



: 만약 동기화를 시킨다면 한쪽이 끝난 다음에 다음에 한쪽이 실행되기 때문에
: 이점이 문제가 됩니다.

<- Synch시킨다는게 DisplayUpdate전체를 Synch하는게 아니라 코드 중간중간에 GUI건드리는 부분만
그렇게 처리해줘야 하는겁니다.
그럼 부분적으로는 기다리겠지만 한쪽이 끝난뒤에 다른쪽이 실행되는 일은 없죠.

+ -

관련 글 리스트
12314 [질문] 한쪽 쓰레드가 돌다 가 멈추는 경우가 자꾸 생깁니다. fbpsok 849 2001/11/04
12319     Re:[질문] 한쪽 쓰레드가 돌다 가 멈추는 경우가 자꾸 생깁니다. 953 2001/11/05
12323         Re:Re:[질문] 한쪽 쓰레드가 돌다 가 멈추는 경우가 자꾸 생깁니다. hongfox(붉은여우) 861 2001/11/05
12326             Re:Re:Re:[질문] 한쪽 쓰레드가 돌다 가 멈추는 경우가 자꾸 생깁니다. 886 2001/11/05
12321         Re:Re:[질문] 한쪽 쓰레드가 돌다 가 멈추는 경우가 자꾸 생깁니다. 792 2001/11/05
12324             Re:Re:Re:[질문] 한쪽 쓰레드가 돌다 가 멈추는 경우가 자꾸 생깁니다. 883 2001/11/05
12325                 Re:Re:Re:Re:[질문] 한쪽 쓰레드가 돌다 가 멈추는 경우가 자꾸 생깁니다. 840 2001/11/05
12327                     Re:Re:Re:Re:Re:[질문] 한쪽 쓰레드가 돌다 가 멈추는 경우가 자꾸 생깁니다. 846 2001/11/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.