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
[67116] Re:쓰레드 사용시 Synchronize() 함수 적용 문제 입니다.
장성호 [nasilso] 2340 읽음    2012-05-03 22:53
Synchronize에 대한 이해가 필요할듯 하네요

Synchronize란 ?
1. Synchronize는 파라메터로 넘긴 함수를 Main쓰레드(GUI쓰레드)에서 호출하고
2. 호출한 쓰레드는 Main쓰레드에서 함수동작을 끝낼때 까지 기다립니다.


코드 설명
그런데 ..
Thread에서 계속 Synchronize를 호출하면

MainThread(GUI쓰레드)에서는 그것 처리한다고 바빠서..

기타 다른  GUI쓰레드가 해야할 작업(mouse,keyboard,timer,화면업데이트)등을 제대로 못하게 된느 것입니다.

Synchronize 바른 사용
Synchronize는
Thread에서 어떤 작업을 하다가..
GUI를 access해야할 경우에 한해서
어쩌다가 한번씩 호출해줘야지  합니다.


님코드와 같이 계속 호출해주면 GUI-Thread가 버벅 거릴수 밖에 없습니다.


그럼...




레쓰비 님이 쓰신 글 :
: 쓰레드를 3개 돌리는데요 Synchronize() 사용시 메인폼 UI들을 작동할 수가 없네요~
: Sleep (30); 이상 줘야 메인 UI 를 마우스로 선택할 수 있습니다.
: 원래 이런 현상이 정상일까요? 
:
: void __fastcall tProcess::Execute()
: {
:     while(!Terminated)
:     {
:         Sleep (10);   // <-  Sleep (30) 이하는 너무 빨라서 메인폼 UI 선택인 안되요~  
:         ...
:         ... 
:         for(int x=0; x<100; x++)
:         {
:             Synchronize(UpdateThread);
:         }
:     }
: }
:
: void __fastcall tProcess::UpdateThread(void)
: {
:     ...
: }

+ -

관련 글 리스트
67115 쓰레드 사용시 Synchronize() 함수 적용 문제 입니다. 레쓰비 897 2012/05/03
67116     Re:쓰레드 사용시 Synchronize() 함수 적용 문제 입니다. 장성호 2340 2012/05/03
67117         Re:Re:쓰레드 사용시 Synchronize() 함수 적용 문제 입니다. 레쓰비 1389 2012/05/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.