ホームページ  >  記事  >  バックエンド開発  >  Python スレッドでのセマフォと制限付きセマフォの概要

Python スレッドでのセマフォと制限付きセマフォの概要

不言
不言オリジナル
2018-09-11 16:28:05978ブラウズ

この記事では、Python スレッドでのセマフォと制限付きセマフォについて説明します。これには一定の参考価値があります。必要な友人は参照できます。お役に立てば幸いです。

セマフォと制限付きセマフォ

セマフォはカウンターベースの同期プリミティブです。acquire() メソッドが呼び出されるたびに、カウンターは 1 ずつ減らされ、release() が呼び出されるたびに、 ) メソッドを呼び出すと、このカウンターは 1 ずつ増加します。カウンタが 0 の場合、acquire() メソッドは、別のスレッドが release() メソッドを呼び出すまでブロックされます。

セマフォ

構文:
s=Semqphore(value)

新しいセマフォを作成します。 value はカウンタの初期値です。値が省略された場合、デフォルトは 1

共通メソッド:

s.acquire(blocking): セマフォを取得します。内部カウンターが 0 より大きい場合、このメソッドはその値を 1 ずつ減らします。
それではすぐに戻ってください。値が 0 の場合、このメソッドは、別のスレッドが release() メソッドを呼び出すまでブロックされます。
ブロッキング パラメーターの動作は、Lock オブジェクトと RLock オブジェクトについて説明したものと同じです。

s.release(): 内部カウンタ値に 1 を加算してセマフォを解放します。
カウンタが 0 で、別のスレッドが待機している場合、そのスレッドは起動されます。
複数のスレッドが待機している場合、acquire() 呼び出しから返されるスレッドは 1 つだけであり、順序は未定義です。

境界セマフォ

構文:
bs=BoundedSemaphore(value)

新しい境界セマフォを作成します。

#セマフォと境界付きセマフォの違い

BoundedSemaphore は Semaphore とまったく同じように機能しますが、release() は操作の数は、acquire() 操作の数を超えることはできません。

セマフォとミューテックスの微妙な違い

セマフォはシグナルの送信に使用できます。たとえば、acquire() メソッドと release() メソッドを異なるスレッドから呼び出して、プロデューサー スレッドとコンシューマー スレッドの間で通信することができます。

関連する推奨事項:

Python3.X スレッドでのセマフォの使用の詳細な説明

Python セマフォ (セマフォ)それは何ですか? (詳細な例)

以上がPython スレッドでのセマフォと制限付きセマフォの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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