目的: セマフォを使用して、共有リソースにアクセスするスレッドの数を制限できます
意味: セマフォは、共通リソースへのアクセスを制御するオブジェクトを指します。リソースにアクセスする前に、スレッドはセマフォから許可を取得する必要があります。リソースにアクセスした後、スレッドはセマフォに許可を返す必要があります。許可が取得されると、セマフォ内の使用可能な許可の総数は 1 つ減ります。許可が解放されると、セマフォ内の許可の数は 1 増加します。
シミュレートに使用できる許可されたセマフォは 1 つだけです相互排他的なロック。
例:ロックとセマフォの類似点と相違点は何ですか?
(ここでのロックはミューテックスロックを指します)
違い:
スコープ
セマフォ:プロセス間またはスレッド間
ミューテックスロック: スレッド
セマフォ中にロックされた場合の実行: セマフォの値が 0 より大きい場合、他のスレッドはタスクを実行できます。そして、実行が成功した後、value=0 の場合、スレッド sem_wait は、sem_post が解放された後に value++ が解放されるまでスレッドをブロックし、他のスレッドは value に基づいて実行できるようになります。
ミューテックスロック: 1 つのオブジェクトのみがロック (ロック) され、他のスレッドはロックされたオブジェクトにアクセスできません。
1つは同期、もう1つは相互排他です
セマフォ: 1つのスレッドがアクションを完了すると、セマフォを通じて他のスレッドに通知します。スレッドは何らかのアクションを実行しています。
ミューテックスロック: マルチスレッドとマルチタスクの相互排他に使用されます。スレッドがリソースを占有すると、他のスレッドはそのリソースにアクセスできなくなり、このスレッドのロックが解除された場合にのみ、他のスレッドがそのリソースを使用できるようになります。
関連記事:
Javaのミューテックスセマフォとマルチスレッド待機機構の例
PHPセマフォの基本的な使用例を詳しく解説
以上がjava - セマフォの概念、ロックとセマフォの類似点と相違点の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。