diff options
author | Brian Cully <bjc@kublai.com> | 2019-08-15 15:04:07 -0400 |
---|---|---|
committer | Brian Cully <bjc@kublai.com> | 2019-09-02 11:42:29 -0400 |
commit | 0654e10d0078955d6917db504ee5947846d4f952 (patch) | |
tree | 6420567ff130614dff2185b77d580efa6593cc87 | |
parent | f15d28f86333d869b3ef0aaba10f4d720725bce5 (diff) | |
download | starb-0654e10d0078955d6917db504ee5947846d4f952.tar.gz starb-0654e10d0078955d6917db504ee5947846d4f952.zip |
Remove `Sync` marker for Reader/Writer.v0.3.0
These are not sync, as they can only be used from one thread at a
time.
Also add a `Send` trait for `RingBuffer`, as long as its element type
is also `Send`.
-rw-r--r-- | Cargo.toml | 2 | ||||
-rw-r--r-- | Changelog.org | 7 | ||||
-rw-r--r-- | src/lib.rs | 3 |
3 files changed, 8 insertions, 4 deletions
@@ -1,7 +1,7 @@ [package] name = "starb" description = "STAtic Ring Buffers." -version = "0.2.0" +version = "0.3.0" authors = ["Brian Cully <bjc@kublai.com>"] edition = "2018" license = "LGPL-3.0-or-later" diff --git a/Changelog.org b/Changelog.org index 93327cc..74c731f 100644 --- a/Changelog.org +++ b/Changelog.org @@ -1,5 +1,10 @@ -* Since 0.1 +* Since 0.2 + - API CHANGE: The `Reader` and `Writer` types were inadvertently + marked `Sync` when they are not. While you may read and write from + separate threads safely, it is neither safe to read from two + threads or more threads nor write from two or more threads. +* Since 0.1 - API CHANGE: `RingBuffer::new()` no longer takes an argument. - `Copy` trait is no longer required on most `RingBuffer` methods. - Added two methods for bulk copying data in/out of the ring buffer: @@ -73,6 +73,7 @@ impl<T> RingBuffer<T> { (rbr, rbw) } } +unsafe impl<T> Send for RingBuffer<T> where T: Send {} /// Consumer of `RingBuffer`. pub struct Reader<'a, T> { @@ -80,7 +81,6 @@ pub struct Reader<'a, T> { _marker: PhantomData<&'a ()>, } unsafe impl<T> Send for Reader<'_, T> where T: Send {} -unsafe impl<T> Sync for Reader<'_, T> {} /// Producer for `Ringbuffer`. pub struct Writer<'a, T> { @@ -88,7 +88,6 @@ pub struct Writer<'a, T> { _marker: PhantomData<&'a ()>, } unsafe impl<T> Send for Writer<'_, T> where T: Send {} -unsafe impl<T> Sync for Writer<'_, T> {} impl<T> Reader<'_, T> { /// The number of elements currently available for reading. |