Mutex는 Mutual Exclusive으로, lock 메커니즘을 통해 동시에 하나의 프로세스 또는 스레드만 접근이 가능하도록 제어하는 것.
Semaphore는 counting value에 따른 lock 메커니즘을 가져서, 최대 가능한 작업수를 제어한다.
동기화 문제가 생길 수 있는데 왜 세마포어를 사용하나?
예를 들어, 데이터베이스 풀에서, 해당 데이터베이스의 성능적인 이슈 등을 통해 최대 접근 가능한 프로세스/스레드를 제어
다른 예시는, 카프카같은 메세징 큐에서, 해당 메세지큐의 남은 자리가 2자리일때, 세마포어는 최대 2개의 프로세스/스레드를 허용하고, 남은자리가 5자리일때는 최대 5개를 허용하는 등, 유동적으로 조정이 가능하다.
Last updated 2 years ago