2012-11-26 3 views
1

이제는 disruptor를 사용하고 있는데, consumer-productor의 간단한 예제를 얻습니다. 완벽하게 실행되지만, 어떤 크기로 설정해야하는지 알지 못합니다.Disruptor의 ClaimStrategy 버퍼 크기를 설정하는 방법

개인 정적 final int BUFFER_SIZE = 4;

private final RingBuffer<StockEvent> ringBuffer = 
    new RingBuffer<StockEvent>(StockEvent.EVENT_FACTORY, 
           new MultiThreadedLowContentionClaimStrategy(BUFFER_SIZE), 
           new YieldingWaitStrategy()); 
private final SequenceBarrier sequenceBarrier = ringBuffer.newBarrier(); 

무엇이 BUFFER_SIZE의 의미입니까?

답변

1

RingBuffer의 배열 할당 크기는 고정되어 있습니다. 필요한 할당을 시작하려면 미리 설정된 버퍼 크기가 필요합니다. 이 크기를 11 이상으로 유지하는 것이 좋습니다 (bufferSize는 2의 제곱이어야 함). 그러나 이것은 아키텍처의 호스트 컴퓨터 &에 따라 다릅니다.

+0

좋아, 내가 알고있는 BUFFER_SIZE, ringbuffer array.try의 크기라고 생각하는 큐, BUFFER_SIZE 큐의 길이입니다. – guolei

+0

실제로 다른 길이의 큐 길이라고 말할 수 없습니다. IMHO 당신은 런타임 버퍼 용량으로 말할 수 있습니다. –

관련 문제