blob: 7a1672d07084ac0c1aadf6ef7ca681206d301b78 [file] [log] [blame]
package main
import (
"runtime"
"github.com/smartystreets/go-disruptor"
)
const MaxConsumers = 1
func main() {
runtime.GOMAXPROCS(MaxConsumers + 1)
writerCursor := disruptor.NewCursor()
writerBarrier := disruptor.NewBarrier(writerCursor)
readerCursors := startReaders(writerBarrier, writerCursor)
readerBarrier := disruptor.NewBarrier(readerCursors...)
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++ {
readerCursor := disruptor.NewCursor()
readerCursors = append(readerCursors, readerCursor)
go consume(writerBarrier, writerCursor, readerCursor)
}
return readerCursors
}