私たちは私たちがコードにセマフォを使用する方法とそれを同期させる必要があると思う sem_init(* SEM、int型のpshared、unsigned int型の値をsem_t)
で「値」を理解するために: 私たちが望むときsem_wait(& mutex)を呼び出し、他のスレッドのsem_wait(& mutex)を実行するように通知する場合は、sem_post(& mutex)を呼び出す必要があります。 しかし、他のどのスレッドもsem_post(& mutex)を最初に(システム初期化時)呼び出さない場合、sem_wait(& mutex)はどうすればよいですか?他のスレッドがsem_post(& mutex)を呼び出すのを待つか待つべきですか? 答えはsem_init()の "value"にあります。ゼロの場合は、他のスレッドがsem_post()を一度呼び出すのを待たなければならないことを意味します。それが1の場合、sem_wait()を初めて呼び出すと同時に渡されますが、sem_wait()は待機します(sem_postが呼び出されていない場合)。 sem_init()の値は、sem_post()を使わずに実際に何も待たずにsem_wait()を何回実行できるかを意味します。 そして、我々は(sem_waitを考慮することができる)として:値が別のスレッドによって大きく0より/
一方(値= 0 <)を に変更されるまで、デッドロックが待機 /{}
value-- ;
sem_post()を次のように見なします。
値++;
「価値がある」とはどういう意味ですか?それはロック/ロック解除されていることを意味しますか?セマフォの可能な問い合わせ数を指定していますか? – SomethingSomething