Disruptor를 처음 사용했습니다. 다음과 같은 두 가지 쿼리가 있습니다.LMAX의 Disruptor는 공유 변수가있는 다중 생성자와 어떻게 작동합니까?
Q1. one producer to one consumer 및 one producer to multiple dependent consumers의 샘플 코드를 얻었습니다.
여러 소비자의 샘플 코드를 여러 소비자 또는 Sequencer : 3P - 1C에서 얻고 싶습니다. 어떤 블로그 나 코드 샘플을 나에게 소개해 주시겠습니까?
2. 이것은 여러 프로듀서 환경에서 한 프로듀서 결과가 이전 프로듀서의 링 버퍼 결과와 어떻게 관련되는지에 대한 일반적인 질문입니다.
예를 들어 Disruptor는 여러 파일 제작자가 단일 파일/변수를 업데이트하는 환경에서 사용할 수 있습니다. 즉 "Count"라는 이름의 단일 공유 변수를 업데이트하는 두 개의 프로듀서 (P1, P2)가 있습니다 (여기에서 Count는 ValueEvent 클래스의 인스턴스 변수입니다).
처음에는 "count"값이 0입니다.
프로듀서 P1은 "카운트"현재 값으로 1을 더합니다. 따라서 프로듀서 P1이 처리 된 후 카운트 값은 (0 + 1) = 1이됩니다.
프로듀서 P2는 "카운트"현재 값으로 2를 더할 것이기 때문에 프로듀서 P2가 처리 된 후 카운트 값은 (기본적으로, P2는 링 버퍼로부터 업데이트 된 "카운트"값 (P1에 의해 행해진)을 판독하고 증가 된 값 (2)을 추가 할 필요가있다 .2.
우리가 프로듀서의 실행의 순서를 유지할 수 있는가? (P2는 P1 실행 후 항상 수행 할 것이다.)
을 소비자 측에서, 소비자 (C1, C2)을 ((가) "계산"순차적 같은 값을 읽어 1,3, ...,.,.). 이것은 링 버퍼에서와 마찬가지로 각 소비자가 링 버퍼 값을 순차적으로 읽는 것만 큼 좋습니다.
감사합니다. Prasenjit.