84.3. 待機戦略

待機戦略は、次のエクスチェンジが発行されるのを現在待機しているコンシューマースレッドによって実行される待機のタイプに影響します。次の戦略を選択できます。

名前説明アドバイス

Blocking

バリアで待機しているコンシューマーにロックと条件変数を使用するブロックストラテジー。

このストラテジーは、スループットと低レイテンシーが CPU リソースほど重要でない場合に使用できます。

スリープ状態

最初にスピンし、次に Thread.yield() を使用し、最終的にコンシューマーがバリアで待機している間に OS と JVM が許可する最小数のナノ秒を使用するスリープ戦略。

このストラテジーは、パフォーマンスと CPU リソースの間の適切な妥協点です。待機時間のスパイクは、静かな期間の後に発生する可能性があります。

BusySpin

バリアで待機しているコンシューマーにビジースピンループを使用するビジースピン戦略。

この戦略では、CPU リソースを使用して、遅延ジッターを引き起こす可能性のあるシステムコールを回避します。スレッドを特定の CPU コアにバインドできる場合に最適です。

Yielding

最初のスピン後にバリアで待機しているコンシューマーに Thread.yield() を使用する譲歩ストラテジー。

このストラテジーは、大幅なレイテンシースパイクを発生させることなく、パフォーマンスと CPU リソースの間の適切な妥協点です。