반응형

mutex 2

Part 4-2-7. 멀티쓰레드 프로그래밍 : Lock 기초

멀티 쓰레드 Lock (OS에서는 크리티컬 섹션(CriticalSection), C++에서는 std::mutex 라고 불린다.) Interlocked 계열 메서드는 성능도 빠르고 좋긴 하지만, 단점이 존재한다. 바로 정수만 사용할 수 있는 것이다. 우리가 나중에 멀티 쓰레드를 이용해 프로그램을 짤 때에는 단순히 number++ 만을 하지는 않을 것이다. 따라서 특정 신호를 주어서 사용자가 정한 블록 안의 내용은 하나의 쓰레드만 실행하도록 제어할 수 있는 도구가 필요할 것이다. 먼저 소스코드 내 가상의 선을 긋는다고 생각하자. 이 영역은 아무도 접근할 수 없으며, 내가 먼저 점유할 경우 다른 쓰레드는 얼씬도 하지 못한다. 라고 생각하자. class Program { static int number = 0;..

뮤텍스(Mutex)와 세마포어(Semaphores)의 차이점

1. 뮤텍스와 세마포어의 차이 뮤텍스와 세마포어는 모두 멀티스레드 애플리케이션에서 공유 리소스에 대한 액세스를 조정하는 데 사용되는 동기화 기본 요소입니다. 하지만 서로 다른 목적을 가지고 있으며 구현 방식도 다릅니다. 다음은 뮤텍스와 세마포어의 주요 차이점을 요약한 표입니다 기능 뮤텍스 세마포어 목적 한 번에 하나의 스레드만 공유 리소스에 액세스할 수 있도록 보장 제한된 수의 리소스에 대한 액세스 제어 구현 플래그 변수 사용 카운터 변수 사용 동작 잠긴 뮤텍스를 얻으려는 스레드를 차단 한계에 도달한 세마포어를 획득하려는 스레드를 차단 사례 경쟁 조건을 방지하는 데 사용 제한된 리소스에 대한 액세스를 제어하는 데 사용 뮤텍스와 세마포어 중 어떤 것을 사용할지는 애플리케이션의 특정 요구사항에 따라 달라집니..

공부/OS 2023.06.04
반응형