82.3. 待機ストラテジー
wait ストラテジーは、現在次のエクスチェンジの公開を待機しているコンシューマースレッドによって実行される待機タイプに影響します。以下のストラテジーを選択できます。
Name | 説明 | アドバイス |
---|---|---|
Blocking | バリアを待機中のコンシューマーにロック変数と条件変数を使用するブロッキングストラテジー。 | このストラテジーは、スループットと低レイテンシーが CPU リソースほど重要ではない場合に使用できます。 |
スリープ状態 | 最初にスピンングストラテジーを使用してから、Thread.yield()を使用し、最終的に OS と JVM がバリアを待機している間に OS と JVM が許容するスペース設定が可能です。 | このストラテジーは、パフォーマンスと CPU リソース間の適切な危険性があります。レイテンシーの急増は、不規則な期間の後に発生する可能性があります。 |
BusySpin | バリアを待機中のコンシューマーにビジースピンループを使用するビジー Spin ストラテジー。 | このストラテジーは CPU リソースを使用してシステムコールを使用し、レイテンシージッターが発生する可能性があります。スレッドを特定の CPU コアにバインドできる場合は、最適です。 |
生成 | 最初のスピンの後にバリアを待機しているコンシューマーに Thread.yield()を使用するストラテジーを生成します。 | このストラテジーは、非常にレイテンシーが急増することなく、パフォーマンスと CPU リソース間の耐性があります。 |