64

私はpthreadとsemaphoreライブラリを使用するいくつかのコードに取り組んでいます。このsem_init関数は私のUbuntuマシンでは正常に機能しますが、OSXではこのsem_init関数はまったく効果がありません。ライブラリに何か問題がありますか、それとも別の方法がありますか?これは私がテストに使用しているコードです。

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);

値は乱数のように見え、sem_init呼び出し後も変化しません。

4

3 に答える 3

99

名前のないセマフォはサポートされていません。名前付きのセマフォを使用する必要があります。

名前なしセマフォの代わりに名前付きセマフォを使用するには、sem_openの代わりにを使用し、の代わりにsem_initand を使用します。sem_closesem_unlinksem_destroy

于 2009-09-20T22:26:14.143 に答える