ホームページ  >  記事  >  Java  >  java - セマフォの概念、ロックとセマフォの類似点と相違点

java - セマフォの概念、ロックとセマフォの類似点と相違点

php是最好的语言
php是最好的语言オリジナル
2018-08-06 16:32:024351ブラウズ

  • セマフォ

目的: セマフォを使用して、共有リソースにアクセスするスレッドの数を制限できます

意味: セマフォは、共通リソースへのアクセスを制御するオブジェクトを指します。リソースにアクセスする前に、スレッドはセマフォから許可を取得する必要があります。リソースにアクセスした後、スレッドはセマフォに許可を返す必要があります。許可が取得されると、セマフォ内の使用可能な許可の総数は 1 つ減ります。許可が解放されると、セマフォ内の許可の数は 1 増加します。

java - セマフォの概念、ロックとセマフォの類似点と相違点 シミュレートに使用できる許可されたセマフォは 1 つだけです相互排他的なロック。

java - セマフォの概念、ロックとセマフォの類似点と相違点

例:

ロックとセマフォの類似点と相違点は何ですか?

(ここでのロックはミューテックスロックを指します)

java - セマフォの概念、ロックとセマフォの類似点と相違点違い:

スコープ

セマフォ:プロセス間またはスレッド間

  1. ミューテックスロック: スレッド

セマフォ中にロックされた場合の実行: セマフォの値が 0 より大きい場合、他のスレッドはタスクを実行できます。そして、実行が成功した後、value=0 の場合、スレッド sem_wait は、sem_post が解放された後に value++ が解放されるまでスレッドをブロックし、他のスレッドは value に基づいて実行できるようになります。

  1. ミューテックスロック: 1 つのオブジェクトのみがロック (ロック) され、他のスレッドはロックされたオブジェクトにアクセスできません。

1つは同期、もう1つは相互排他です

セマフォ: 1つのスレッドがアクションを完了すると、セマフォを通じて他のスレッドに通知します。スレッドは何らかのアクションを実行しています。

  1. ミューテックスロック: マルチスレッドとマルチタスクの相互排他に使用されます。スレッドがリソースを占有すると、他のスレッドはそのリソースにアクセスできなくなり、このスレッドのロックが解除された場合にのみ、他のスレッドがそのリソースを使用できるようになります。

  2. つまり、セマフォは必ずしも特定のリソースをロックすることではなく、プロセスの概念です。たとえば、2 つのスレッド A と B があります。スレッド B は、スレッド A が特定のタスクを完了するまで待つ必要があります。このタスクには必ずしも特定のリソースのロックが含まれるわけではありませんが、一部の計算やデータ処理を実行することもできます。スレッドミューテックスとは、「特定のリソースをロックする」という概念で、ロック期間中は他のスレッドは保護されたデータを操作できません。場合によっては、この 2 つを入れ替えることもできます

関連記事:

Javaのミューテックスセマフォとマルチスレッド待機機構の例

PHPセマフォの基本的な使用例を詳しく解説

以上がjava - セマフォの概念、ロックとセマフォの類似点と相違点の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。