diff --git a/tests/tsan.rs b/tests/tsan.rs index edee90111872fb6593d58d27a106ed09f00ed50f..6685bd234c82a2b6da1c7e3927968ddade3d2ebb 100644 --- a/tests/tsan.rs +++ b/tests/tsan.rs @@ -5,7 +5,7 @@ use std::thread; use heapless::RingBuffer; #[test] -fn tsan() { +fn once() { static mut RB: RingBuffer<i32, [i32; 4]> = RingBuffer::new(); unsafe { RB.split() }.0.enqueue(0).unwrap(); @@ -18,3 +18,21 @@ fn tsan() { unsafe { RB.split() }.1.dequeue().unwrap(); }); } + +#[test] +fn twice() { + static mut RB: RingBuffer<i32, [i32; 8]> = RingBuffer::new(); + + unsafe { RB.split() }.0.enqueue(0).unwrap(); + unsafe { RB.split() }.0.enqueue(1).unwrap(); + + thread::spawn(|| { + unsafe { RB.split() }.0.enqueue(2).unwrap(); + unsafe { RB.split() }.0.enqueue(3).unwrap(); + }); + + thread::spawn(|| { + unsafe { RB.split() }.1.dequeue().unwrap(); + unsafe { RB.split() }.1.dequeue().unwrap(); + }); +}