84.4. 대기 전략
대기 전략은 현재 다음 교환이 게시되기를 기다리는 소비자 스레드에서 수행하는 대기 유형에 영향을 미칩니다. 다음 전략을 선택할 수 있습니다.
이름 | 설명 | 권고 |
---|---|---|
차단 | 장벽을 기다리는 소비자에 잠금 및 조건 변수를 사용하는 차단 전략입니다. | 이 전략은 처리량과 짧은 대기 시간이 CPU 리소스만큼 중요하지 않은 경우 사용할 수 있습니다. |
Sceiving | 처음에는 회전하는 전략, Thread.yield()를 사용하고, 결국 소비자가 장벽을 기다리는 동안 OS 및 JVM이 허용하는 최소 나노 수를 사용합니다. | 이 전략은 성능과 CPU 리소스 간의 좋은 절충입니다. 대기 시간 급증은 유휴 기간 후에 발생할 수 있습니다. |
BusySpin | 사용 중인 Spin 전략 - 장벽을 기다리는 소비자에 대해 유해한 회전 루프를 사용합니다. | 이 전략은 CPU 리소스를 사용하여 대기 시간 지터를 도입할 수 있는 syscall을 방지합니다. 스레드를 특정 CPU 코어에 바인딩할 수 있는 경우 가장 적합합니다. |
산출 | 초기 회전 후 장벽을 기다리는 소비자에 대해 Thread.yield()를 사용하는 전략을 산출합니다. | 이 전략은 상당한 대기 시간이 급증하지 않고 성능과 CPU 리소스 간에 좋은 저하입니다. |