Loop to publish multiple items.
diff --git a/example/example_producer.go b/example/example_producer.go
index 96e18f0..3f00a46 100644
--- a/example/example_producer.go
+++ b/example/example_producer.go
@@ -4,13 +4,17 @@
func publish(writer *disruptor.Writer) {
for {
- sequence := writer.Reserve(1)
+ sequence := writer.Reserve(ItemsToPublish)
+
if sequence != disruptor.Gating {
- // ringBuffer[(sequence-3)&RingMask] = sequence - 3
- // ringBuffer[(sequence-2)&RingMask] = sequence - 2
- // ringBuffer[(sequence-1)&RingMask] = sequence - 1
- ringBuffer[sequence&RingMask] = sequence
+ for lower := sequence - ItemsToPublish; lower < sequence; {
+ lower++
+ ringBuffer[(lower)&RingMask] = lower
+ }
+
writer.Commit(sequence)
}
}
}
+
+const ItemsToPublish = 4
diff --git a/example/main.go b/example/main.go
index d93130e..5e3b6f4 100644
--- a/example/main.go
+++ b/example/main.go
@@ -28,10 +28,10 @@
// wildly sporadic latency for single-item publish, e.g. 2 seconds, 65 ms, etc.
// faster for 2-3+ items per publish
- // go consume(reader)
+ go consume(reader)
// constant time regardless of the number of items
- go easyConsume(disruptor.NewEasyReader(reader, NewExampleConsumerHandler()))
+ // go easyConsume(disruptor.NewEasyReader(reader, NewExampleConsumerHandler()))
}
return readerCursors