84.3. 待機戦略
待機戦略は、次のエクスチェンジが発行されるのを現在待機しているコンシューマースレッドによって実行される待機のタイプに影響します。次の戦略を選択できます。
名前 | 説明 | アドバイス |
---|---|---|
Blocking | バリアで待機しているコンシューマーにロックと条件変数を使用するブロックストラテジー。 | このストラテジーは、スループットと低レイテンシーが CPU リソースほど重要でない場合に使用できます。 |
スリープ状態 | 最初にスピンし、次に Thread.yield() を使用し、最終的にコンシューマーがバリアで待機している間に OS と JVM が許可する最小数のナノ秒を使用するスリープ戦略。 | このストラテジーは、パフォーマンスと CPU リソースの間の適切な妥協点です。待機時間のスパイクは、静かな期間の後に発生する可能性があります。 |
BusySpin | バリアで待機しているコンシューマーにビジースピンループを使用するビジースピン戦略。 | この戦略では、CPU リソースを使用して、遅延ジッターを引き起こす可能性のあるシステムコールを回避します。スレッドを特定の CPU コアにバインドできる場合に最適です。 |
Yielding | 最初のスピン後にバリアで待機しているコンシューマーに Thread.yield() を使用する譲歩ストラテジー。 | このストラテジーは、大幅なレイテンシースパイクを発生させることなく、パフォーマンスと CPU リソースの間の適切な妥協点です。 |