Пример разрушителя с 1 издателем и 4 параллельными потребителями

В этом примереhttps://stackoverflow.com/a/9980346/93647 и здесьПочему мой пример разрушителя такой медленный? (в конце вопроса) есть 1 издатель, который публикует товары, и 1 потребитель.

Но в моем случае работа с потребителем намного сложнее и занимает некоторое время. Поэтому я хочу, чтобы 4 потребителя обрабатывали данные параллельно.

Так, например, если производитель производит цифры: 1,2,3,4,5,6,7,8,9,10,11.

Я хочу, чтобы customer1 поймал 1,5,9, ... consumer2 поймал 2,6,10, ... consumer3 поймал 3,7,11, ... consumer4 поймал 4,8,12 ... ( ну не совсем эти цифры, идея в том, что данные должны обрабатываться параллельно, я нене важно, какое определенное число обрабатывается на каком потребителе)

И помните, что это нужно делать параллельно, потому что в реальных приложениях работа с потребителем довольно дорогая. Я ожидаю, что потребители будут выполняться в разных потоках, чтобы использовать возможности многоядерных систем.

Конечно, я могу просто создать 4 кольцевых буфера и подключить 1 потребителя к одному кольцевому буферу. Таким образом, я могу использовать оригинальный пример. Но я чувствую, что это нене быть правильным. Скорее всего, было бы правильно создать 1 издателя (1 рингбуфер) и 4 потребителя - так как это то, что мне нужно.

Добавление ссылки на очень простой вопрос в группах Google:https://groups.google.com/forum/#!msg/lmax-disruptor/-CLapWuwWLU/GHEP4UkxrAEJ

Итак, у нас есть два варианта:

одно кольцо много потребителей (каждый потребитель будет "просыпайся" при каждом добавлении все потребители должны иметь одинаковую WaitStrategy)много "одно кольцо - один потребитель " (каждый потребитель проснется только от данных, которые он должен обработать. каждый потребитель может иметь собственную WaitStrategy).

Ответы на вопрос(2)

Ваш ответ на вопрос