|
xen 님이 쓰신 글 :
:
: 글 잘 읽었습니다.
:
: 리플 주셔서 감사하구여 ...
:
: 확인차 질문 다시 드리겠습니다!
:
: Synchronize 는 Critical Section랑은 완전히 틀리단 말씀이시져?
:
: 그렇다면 콘솔 프로그램이 아닌상태에서 여러개의 CPU가 있는 시스템에서
:
: 사용해도 된다는 말씀이신지여?
:
: 만약에 사용해도 된다면 Mutex와 비교 했을때 속도면에서 어느쪽이
:
: 우월한지여?
스레드 동기화 알고리듬의 속도 순위는 다음과 같습니다.
critical section > Synchronize > semaphore > MUTEX
MUTEX는 멀티프로세서 시스템에서도 사용할 수 있고, 스트링으로 이름을 부여할 수도 있는 등
편리한 기능을 제공하지만, critical section에 비해 약 300배가 느리다는 군요.
(정우철, "Borland C++Builder 4 Programming Bible", 정보문화사)
: : TThread::Synchronize()는 Critical section이 아니라 메시지 루프를 이용한 방식입니다.
: : 그래서 콘솔 프로그램에서는 사용할 수 없죠.
: :
: : WIN32 API의 CriticalSection을 Wrapping한 VCL 클래스로 TCriticalSection 가 따로 있습니다.
: :
: : 그러면 멀티프로세싱 시스템에서 돌아가는 콘솔 프로그램에서 동기화를 하려면
: : 세마포어(semaphore)나 MUTEX를 쓰는 방법밖에는 없군요.
: :
|