카테고리 없음

세마포어와 뮤텍스 차이

jw-backend 2024. 11. 21. 13:45
반응형

뮤텍스(mutex)와 세마포어(semaphore)는 모두 동기화 메커니즘으로, 멀티스레드 환경에서 자원에 대한 접근을 제어하는 데 사용됩니다. 

뮤텍스 (Mutex)
정의: 뮤텍스는 "상호 배제(mutual exclusion)"의 약자로, 한 번에 하나의 스레드만 특정 자원에 접근할 수 있도록 보장합니다.
스레드 수: 뮤텍스는 오직 하나의 스레드만 자원에 접근할 수 있도록 허용합니다. 즉, 뮤텍스를 잠그면 다른 스레드는 해당 자원에 접근할 수 없습니다.
용도: 주로 공유 자원에 대한 독점적인 접근을 보장할 때 사용됩니다.

 

 


세마포어 (Semaphore)
정의: 세마포어는 특정 자원에 접근할 수 있는 스레드의 수를 제한하는 카운터입니다.
스레드 수: 세마포어는 한 개 이상의 스레드가 동시에 자원에 접근할 수 있도록 허용할 수 있습니다. 세마포어의 카운터 값에 따라 동시에 접근할 수 있는 스레드의 수가 결정됩니다.
이진 세마포어: 카운터가 0 또는 1인 세마포어로, 뮤텍스와 유사하게 동작합니다.
계수 세마포어: 카운터가 0 이상의 값을 가질 수 있어, 여러 스레드가 동시에 자원에 접근할 수 있습니다.
용도: 자원의 수가 제한된 경우(예: 데이터베이스 연결 풀) 여러 스레드가 동시에 접근할 수 있도록 할 때 사용됩니다.

 

 


결론
뮤텍스는 한 번에 하나의 스레드만 자원에 접근할 수 있도록 제한합니다.
세마포어는 한 개 이상의 스레드가 동시에 자원에 접근할 수 있도록 허용할 수 있습니다.