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
[47274] Re:[질문]Synchronize대신에 CriticalSection을 사용해도 마찬가지아닌가요.
김상구.패패루 [peperu] 1485 읽음    2006-12-01 17:31
어느걸 쓰셔도 무방합니다만... Synchronize와 CriticalSection은 적제적소에 사용하시는것이 좋습니다.
Synchronize는 그 함수 전체가 동기화 되기 때문에 간단한 함수를 동기화 시킬때 편리합니다. 그렇지만 만약 하나의 함수에서 상당히 많은 작업을 처리하는 경우, 즉, 처리시간이 길어지는 경우 전체를 동기화시키는건 바보짓이겠죠.
이런 경우는 크리티컬섹션을 써서 부분부분 충돌이 일어날 가능성이 있는 부분만 동기화 하시는 것이 훨씬 효율적입니다.

또한 Thread에서는 오직 공용으로 사용하는 기본타입의 변수(즉, int, double등등 한번의 연산으로 처리되는것들)를 reading만 하고 write는 다른 한 곳(예를 들면 메인 쓰레드에서만) 한다면 굳이 CriticalSection으로 동기화 시킬 필요도 없습니다. 그냥 마구 읽어도 전혀 무방합니다. 물론 스트링을 그런식으로 처리하면 난리나겠죠. ^^

동기화는 항상 희생이 따릅니다. 희생을 최소화 하는 방향으로 잘 선택해서 사용하세요

하안인 님이 쓰신 글 :
: 쓰레드에서 동기화 시킬때
: Synchronize() 대신에 CriticalSection을 사용해도 마찬가지 아닌가요.
:
: Synchronize안에 함수는 인자를 전달할 수 없어서 .....
:
: 인디에서 TidTcpServer의 Execute에서
: 폼의 컴포넌트에 접근하려고 하는데
: 전달받은 문자를 보여주려고 할때 함수는 호출할수 있어도 문자값을 전달할 수 없어서요.

+ -

관련 글 리스트
47265 [질문]Synchronize대신에 CriticalSection을 사용해도 마찬가지아닌가요. 하안인 1024 2006/12/01
47274     Re:[질문]Synchronize대신에 CriticalSection을 사용해도 마찬가지아닌가요. 김상구.패패루 1485 2006/12/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.