セマフォは静的変数として定義されています
static int semaphore = -1;
このセマフォに投稿しようとしています
sem_post(&semaphore);
この方法で作成されたスレッドには、セマフォの待機があります。
pthread_create(&tid, NULL, start, NULL);
と
static void *start(void *context)
{
// ...
sem_init(&semaphore, 0, 0);
sem_wait(&semaphore);
// ...
return NULL;
}
どういうわけか、セマフォの待機はセマフォの投稿の影響を受けません。開始ルーチンからセマフォに投稿すると、すべて問題ありません。
何が問題ですか?