critical section, mutex, semaphore 비교

 Object  When Nonsignaled  When Signaled  Successful Wait Side Effect  Semaphore  Successful wait  When count>0 (ReleaseSemaphore)  Decrements count by 1   Mutex  Successful wait  When unowned by a thread (ReleaseMutex) Gives ownership to thread   Critical  Successful wait (EnterCriticalSection)  When unowned by a thread (LeaveCriticalSection) Gives ownership to thread 위는 Richter 책에 있는 표를 인용했다. 1. 크리티컬 섹션 유저모드 동기화 객체이다. 커널모드 객체가 아니기 때문에 가볍고 같은 프로세스내에 스레드 동기화에 사용할 수 있다. EnterCriticalSection을 호출하면 객체는 비신호 상태가 되고 LeaveCriticalSection을 호출하면 신호상태로 바뀌어서 다른 스레드들이 접근가능하다. 2. 뮤텍스 커널모드 동기화 객체이다. 커널모드라서 크리티컬 섹션보다는 느리지만 프로세스를 넘어서 모든 스레드에 사용될 수 있는 동기화 객체이다. 뮤텍스를 신호상태로 생성한 후 스레드에서 Wait 함수를 호출하면 뮤텍스는 비신호 상태가 되어서 다른 스레드에서는 접근하지 못한다. ReleaseMutex를…

Thread Pooling

Thread Pools http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Thread/Advanced/ThreadPool Thread Pools (java) http://download.oracle.com/javase/tutorial/essential/concurrency/pools.html http://www.java2s.com/Code/Java/Threads/ThreadPoolTest.htm 크리티컬 섹션(CriticalSection) http://www.nicklib.com/bbs/board.php?bo_table=bbs_lecture&wr_id=52&page=2 http://en.wikibooks.org/wiki/Java_Programming/Basic_Synchronization