Maximum throughput at 600M messages per second.
diff --git a/example/example_producer.go b/example/example_producer.go
index fc65a06..bd62d8c 100644
--- a/example/example_producer.go
+++ b/example/example_producer.go
@@ -4,10 +4,11 @@
func publish(writer *disruptor.Writer) {
for {
- sequence := writer.Reserve(1)
+ sequence := writer.Reserve(4)
if sequence != disruptor.Gating {
- // ringBuffer[(sequence-2)&RingMask] = sequence - 2
- // ringBuffer[(sequence-1)&RingMask] = sequence - 1
+ ringBuffer[(sequence-3)&RingMask] = sequence - 3
+ ringBuffer[(sequence-2)&RingMask] = sequence - 2
+ ringBuffer[(sequence-1)&RingMask] = sequence - 1
ringBuffer[sequence&RingMask] = sequence
writer.Commit(sequence)
}
diff --git a/example/main.go b/example/main.go
index 683f9c3..9a1cab9 100644
--- a/example/main.go
+++ b/example/main.go
@@ -2,7 +2,6 @@
import (
"runtime"
- "time"
"github.com/smartystreets/go-disruptor"
)
@@ -15,15 +14,15 @@
writerCursor := disruptor.NewCursor()
writerBarrier := disruptor.NewBarrier(writerCursor)
- writerCursor.Store(disruptor.MaxSequenceValue)
- startReaders(writerBarrier, writerCursor)
- time.Sleep(time.Second * 10)
+ // writerCursor.Store(disruptor.MaxSequenceValue)
+ // startReaders(writerBarrier, writerCursor)
+ // time.Sleep(time.Second * 10)
- // readerCursors := startReaders(writerBarrier, writerCursor)
- // readerBarrier := disruptor.NewBarrier(readerCursors...)
+ readerCursors := startReaders(writerBarrier, writerCursor)
+ readerBarrier := disruptor.NewBarrier(readerCursors...)
- // writer := disruptor.NewWriter(writerCursor, RingSize, readerBarrier)
- // publish(writer)
+ writer := disruptor.NewWriter(writerCursor, RingSize, readerBarrier)
+ publish(writer)
}
func startReaders(writerBarrier disruptor.Barrier, writerCursor *disruptor.Cursor) (readerCursors []*disruptor.Cursor) {
for i := 0; i < MaxConsumers; i++ {
diff --git a/example/ring_buffer.go b/example/ring_buffer.go
index 5b1419d..6ec5729 100644
--- a/example/ring_buffer.go
+++ b/example/ring_buffer.go
@@ -1,7 +1,7 @@
package main
const (
- RingSize = 1024 * 16
+ RingSize = 1024 * 1024
RingMask = RingSize - 1
)