web-dev-qa-db-ja.com

スレッド-いつバリアを使用するのですか?

python構文を使用して、

threading.Barrier(NUM_THREADS)は、制御ポイントを確立し、参加しているすべての「パーティ」がそのポイントに到達するまで、参加しているすべてのスレッドがブロックされます。スレッドを個別に起動し、すべての準備ができるまで一時停止できます。

誰かが、バリアの使用に関するリアルタイムのシナリオ(マルチスレッド)を説明できますか?

3
overexchange

バリアは、同じプログラム内の複数のスレッドが同期した方法で何かを実行するために使用されます。

実際のアナログは 競馬のスターティングゲート です。競走中の10頭の馬が同時にゲートに到着することはありませんが、10頭の馬すべてがゲートに入り、レースの準備ができるまでは、ゲートが開いて各馬がレースを開始しません。 (開始ゲートは、開始バリアとも呼ばれます。これは、ゲートがゲートではなくバリアであり、スレッド構造がその名前を得た可能性があるためです。)

スレッディングのバリアも同じことを行います。各スレッドに機能があり、すべてのスレッドが動作を開始する前に準備ができている必要があるシステムでは、強制する方法は、スレッドを初期化してからバリアで満たすことです。これは、車のエンジンを実行するシステムで見られる可能性があります。スロットルおよびクランク位置センサーを処理するスレッドが有用なデータを提供できるようになるまで、点火を監視するスレッドは動作しません。

3
Blrfl

使用例としては、すべてのワーカーが作業を送信する前に準備ができていることを報告するワーカープールのようなものがあります。または、並列にロードされるゲームのサブシステムのようなもの。またはmap-reduceのマップステップ...

それは単なるツールです。

2
Telastyn