Mac OS X에서 POSIX 규격의 세마포어는 사실 Mach semaphore 기반으로 구현이 되어 있다고한다 ( Mac OS X Internals 도서 9.18.5 참고 ).

한가지 사소한 문제점이라면 OS X에서 POSIX규격의 unnamed semaphore(binary semaphore)가 구현되어 있지 않다는 점이다. 그래서 POSIX unnamed semaphore를 구현하려면 2가지 대체 방안을 사용할 수 있다.
  1. POSIX의 named semaphore를 사용
  2. Mach semaphore를 사용

 POSIX의 named semaphore를 사용하는 방법은 POSIX unnamed semaphore를 생성할때 사용하는 함수인 sem_init()대신 sem_open()을 사용하는 방법이다. sem_open("/tmp/sem", O_CREAT, 0777, 0)) 처럼 구체적인 파일을 열어야 한다.

 두번째 방법인 Mach semaphore를 사용하는 방법은 애플 데벨로퍼 사이트를 참고하면 된다. 세마포어를 만들때 semaphore_create()를 사용하는데 조금 다르다. 사이트를 읽어보면 바로 깨어난 쓰레드가 다시 run되는 stavation을 피하도록 설계되었다고 하니 참고할 것.

Using counting semaphores on Mac OS X 링크의 글도 참고~
Posted by trip2me
,