본문 바로가기
프로그래밍/C#

[c#] Mutex , semaphore, monitor

by 뽀도 2019. 2. 17.

* Mutex

 

1. 설명

- Mutex 클래스는 해당 머신의 프로세스간에서도 베타적Locking을 하는데 사용.

- Mutex 락킹은 Monitor 락킹보다 약 50배 정도 느리기 때문에 프로세스내에서만 배타적 Lock이 필요한 경우 C#lock이나 Monitor클래스를 사용한다.

- 한 프로세스 내에서 사용할 경우 Monitor를 사용하는 것이 빠른 방식이다.

 

2. Mutex 활용

- 한 머신내에서 오직 한 응용프로그램만 실행되도록 할 때

한 컴퓨터 내 한 프로세스만 뜨게 하기 위해 고유의 Mutex명을 지정할 필요가 있음.

처음 프로세스가 먼저 Mutex를 획득하면 다른 프로세스는 Mutex를 획득 할 수 없기 때문에 오직 하나의 프로그램만 머신내에서 실행되는 것

 

* Semaphore

1. 설명

- 공유된 리소스를 지정된 수의 쓰레드들만 엑세스 할 수 있게 허용함.

- lock, Monitor, Mutex가 한번에 한 쓰레드만 허용하는 반면, 세마포어는 복수 개의 쓰레드가동시에 리소스를 엑세스하는 것을 허용한다.

 

* Monitor

- 특정 코드 블록을 베타적으로 locking하는 기능을 가지고 있다.

- cirtical section 블록을 시작하여 한 쓰레드만 블록으로 들어가게 함.

 

 

 

 

 

 

 

반응형

'프로그래밍 > C#' 카테고리의 다른 글

Wcf : binding  (0) 2019.05.26
string , string builder 차이  (0) 2019.03.05
[c#] local ip 찾는 함수  (0) 2018.07.03
리플렉션  (0) 2017.08.13
전처리기.  (0) 2017.08.13

댓글