Skip to content

Semaphore

세마포어는 리소스의 상태를 나타내는 간단한 카운터로 생각할 수 있다. 이 카운터는 보호되는 변수이며 사용자가 바로 접근할 수 없다. 이 변수에 대한 방어벽은 다름 아닌 커널이 제공한다. 세마포어 변수의 사용법은 간단하다. 카운터가 0보다 큰 경우 리소스를 사용할 수 있으며 카운터가 0이거나 혹은 이 보다 작은 경우 리소스는 다른 곳에서 사용하고 있는 중이다. 이 간단한 매커니즘이 멀티쓰레드와 멀티프로세스 기반의 응용프로그램 동기화에 도움을 준다. 세마포어는 Edsger Dijkstra가 고안했으며 동기화의 목적으로 오늘날 OS에서도 여전히 사용되고 있다. 이와 똑같은 매커니즘을 응용프로그램 개발자들 또한 사용하고 있으며 이중 가장 중요한 측면 중 하나가 프로세스간 통신이다.

Windows API

Unix C API

Windows와 Linux의 Semaphore 함수 비교

Semaphore는 Windows와 Linux의 용례가 비슷하다.

Linux에서는 Windows의 event구현과 비슷하게 하면 되지만, 초기값을 얼마로 가지느냐만 다르게 설정을 해 주면 된다.

기능

Windows

Linux

생성

CreateSemaphore

sem_init

진입

WaitForSingleObject

sem_wait, sem_trywait

방출

ReleaseSemaphore

sem_post

제거

CloseHandle

sem_destroy

See also

Favorite site