Mutex 클래스
Mutex 클래스는 Monitor클래스와 같이 특정 코드 블럭(Critiacal Section)을 배타적으로 Locking하는 기능을 가지고 있다. 단, Monitor클래스는 하나의 프로세스 내에서만 사용할 수 있는 반면, Mutex 클래스는 해당 머신의 프로세스간에서도 배타적 Locking을 하는데 사용된다. Mutex 락킹은 Monitor 락킹보다 약 50배 정도 느리기 때문에 한 프로세스내에서만 배타적 Lock이 필요한 경우는 C#의 lock이나 Monitor 클래스를 사용한다. 아래 예제는 MyClass가 외부 프로세스에서도 사용할 수 있다는 가정하에 배타적 Lock으로 뮤텍스를 사용하는 예이다. (실제로는 한 프로세스 내에서 사용할 경우, Monitor를 사용하는 것이 빠른 방식이다)
예제
프로세스간 Mutex 활용
Mutex 활용에 적합한 예로서 흔히 한 머신 내에서 오직 한 응용프로그램(Application)만이 실행되도록 하는 테크닉을 든다. 한 컴퓨터 내 한 프로세스만 뜨게 하기 위해 고유의 Mutex명을 지정할 필요가 있는데, 일반적으로 이를 위해 GUID (globally unique identifier)를 사용한다. 처음 프로세스가 먼저 Mutex를 획득하면 다른 프로세스는 Mutex를 획득할 수 없기 때문에 오직 하나의 프로그램만 머신 내에서 실행되는 것이다.
예제
'Knowledge' 카테고리의 다른 글
C# 5.0 || await || async (0) | 2018.04.19 |
---|---|
C# version (0) | 2018.04.19 |
Working With Thread Local Storage (TLS) in C# (0) | 2018.04.18 |
Cross Thread Operations in C# (0) | 2018.04.18 |
Aborting Thread Vs Cancelling Task (0) | 2018.04.18 |