85.4. 等待策略
等待被等待下一个交换的消费者线程执行的等待类型生效。可以选择以下策略:
名称 | 描述 | 建议 |
---|---|---|
Blocking | 阻塞策略使用锁定和状况变量等待在 barrier 上等待的消费者。 | 当吞吐量和低延迟不与 CPU 资源一样重要时,可以使用此策略。 |
sleeping | 最初旋转的策略,然后使用 Thread.yield (),最终 OS 和 JVM 将允许最少的 nanos,而消费者正在等待 barrier。 | 此策略在性能和 CPU 资源之间是一个很好的折衷。延迟激增可能会在静默期后发生。 |
BusySpin | 忙碌 Spin 策略使用忙碌的旋转循环来等待一个 barrier 的消费者。 | 此策略将使用 CPU 资源来避免出现延迟危机的 syscalls。当线程可以绑定到特定 CPU 内核时,最好使用它。 |
产生 | 生成使用 Thread.yield ()在初始启动后等待 barrier 消费的策略。 | 此策略在性能和 CPU 资源之间是一个很好的折衷,而不会产生大量延迟高峰。 |