Fixed bug with multiple, barriered readers where it would get ahead of the writer; updated panic message.
diff --git a/easy_reader.go b/easy_reader.go
index 3129a23..5c1d14d 100644
--- a/easy_reader.go
+++ b/easy_reader.go
@@ -19,7 +19,7 @@
sequence++
}
- this.reader.Commit(sequence)
+ this.reader.Commit(sequence - 1)
return sequence
} else {
return remaining // Idling, Gating
diff --git a/example/example_consumer.go b/example/example_consumer.go
index 381be7f..ff0e315 100644
--- a/example/example_consumer.go
+++ b/example/example_consumer.go
@@ -25,13 +25,15 @@
if sequence != ringBuffer[sequence&RingMask] {
message := ringBuffer[sequence&RingMask]
- panic(fmt.Sprintf("Sequence: %d, Message %d\n", sequence, message))
+ alert := fmt.Sprintf("Race Condition::Sequence: %d, Message %d\n", sequence, message)
+ fmt.Print(alert)
+ panic(alert)
}
remaining--
sequence++
}
- reader.Commit(sequence)
+ reader.Commit(sequence - 1)
}
}
}