# Mutex vs Semaphore

Mutex는 Mutual Exclusive으로, lock 메커니즘을 통해 동시에 하나의 프로세스 또는 스레드만 접근이 가능하도록 제어하는 것.



Semaphore는 counting value에 따른 lock 메커니즘을 가져서, 최대 가능한 작업수를 제어한다.



동기화 문제가 생길 수 있는데 왜 세마포어를 사용하나?

예를 들어, 데이터베이스 풀에서, 해당 데이터베이스의 성능적인 이슈 등을 통해 최대 접근 가능한 프로세스/스레드를 제어

다른 예시는, 카프카같은 메세징 큐에서, 해당 메세지큐의 남은 자리가 2자리일때, 세마포어는 최대 2개의 프로세스/스레드를 허용하고, 남은자리가 5자리일때는 최대 5개를 허용하는 등, 유동적으로 조정이 가능하다.
