leeyang의 개발 성장기
세마포어 뮤텍스 차이 본문
안녕하세요. 리양입니다 :)
2020년 새해가 밝아서 놀랍네요 ㅠ.ㅠ 다들 새해복 많이 받으세용 :)
세마포어? 뮤텍스? 차이가 별로 없는 거 같은 데 조금은 헷갈립니다.
차이를 말하기 전에 이 둘은 언제 사용하는지가 중요하죠.
멀티스레드를 할 때, 공유 자원에 여러 개의 스레드가 접근할 수 있으므로 공유 자원 영역에 대한 동기화가 필요합니다.
그래서 일반적으로 동기화를 하기 위해 공간 또는 시간을 제어하죠.
여기서, 세마포어는 공유된 자원의 데이터를 여러 프로세스가 접근하는 것을 막는 것이고
뮤텍스는 공유된 자원의 데이터를 여러 쓰레드가 접근하는 것을 막는 것입니다.
그리고 카운팅의 개념으로 세마포어는 뮤텍스가 될 수 있지만 뮤텍스는 세마포어가 될 수 없습니다.
그건 왜일까요..?
그림처럼 세마포어는 여러개의 자원을 여러 스레드가 증가하며 한정된 자원까지 받을 수 있지만
뮤텍스는 하나의 자원을 접근 중인 스레드가 있다면 다른 자원은 기다리게 하기 때문입니다.
그외에 뮤텍스를 소유하고 있는 스레드가 뮤텍스를 해제할 수 있지만 세마포어는 소유하고 있지 않은 스레드도 세마포어를 해제할 수 있습니다.
출처
'컴공기초지식' 카테고리의 다른 글
Http header를 알아봅시다! (0) | 2019.12.03 |
---|---|
프로세스(process)와 스레드(thread) 차이 (0) | 2019.09.25 |
Comments