sem_init no OS X

Eu estou trabalhando em algum código que usa as bibliotecas pthread e semáforo. A function sem_init funciona bem na minha máquina Ubuntu, mas no OS X a function sem_init não tem absolutamente nenhum efeito. Há algo de errado com a biblioteca ou há uma maneira diferente de fazê-lo? Este é o código que estou usando para testar.

 sem_t sem1; sem_t sem2; sem_t sem3; sem_t sem4; sem_t sem5; sem_t sem6; sem_init(&sem1, 1, 1); sem_init(&sem2, 1, 2); sem_init(&sem3, 1, 3); sem_init(&sem4, 1, 4); sem_init(&sem5, 1, 5); sem_init(&sem6, 1, 6); 

Os valores parecem ser números randoms e não são alterados após a chamada sem_init .

    Semaphores sem nome não são suportados, você precisa usar semáforos nomeados.

    Para usar semáforos nomeados em vez de semáforos sem nome, use sem_open vez de sem_init e use sem_close e sem_unlink vez de sem_destroy .

    Uma solução melhor (hoje em dia) do que os semáforos nomeados no OS X é o dispatch_semaphore_t do Grand Central Dispatch. Ele funciona muito parecido com os semáforos POSIX sem nome.

    Inicialize o semáforo:

     #include  dispatch_semaphore_t semaphore; semaphore = dispatch_semaphore_create(1); // init with value of 1 

    Espere e poste (sinal):

     dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); ... dispatch_semaphore_signal(semaphore); 

    Destruir:

     dispatch_release(semaphore); 

    O arquivo de header está bem documentado e achei muito fácil de usar.