85.4. 等待策略
等待策略对当前等待下一个交换的消费者线程执行的等待类型的影响。可以选择以下策略:
名称 | 描述 | 建议 |
---|---|---|
Blocking | 阻塞使用锁定和条件变量进行 Consumers 等待屏障的策略。 | 当 throughput 和 low-latency 不是 CPU 资源不重要时,可以使用此策略。 |
睡眠 | 初次启动的策略,然后使用 Thread.yield (),最终用作 OS 和 JVM 在等待一个障碍时允许的最小 nano 数量。 | 此策略在性能和 CPU 资源之间是一个很好的折衷。延迟激增可能会在静默时间后发生。 |
BusySpin | 忙碌的 Spin 策略,其使用忙碌的 Consumers 等待一个障碍。 | 此策略将使用 CPU 资源以避免 syscalls 引入延迟 jitter。当线程绑定到特定 CPU 内核时,最好使用它。 |
生成 | 生成一个策略,该策略使用 Thread.yield ()用于 Consumers,等待自上机后等待一个障碍。 | 此策略在性能和 CPU 资源之间是一个很好的折衷,而不会造成大量延迟激增。 |