Skip to content

Commit b36e109

Browse files
committed
thread: Relax memory ordering a bit
1 parent 520980b commit b36e109

1 file changed

Lines changed: 6 additions & 6 deletions

File tree

disktest-lib/src/stream.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ fn thread_worker(
9898
#[cfg(test)]
9999
let mut index = 0;
100100
let mut cur_level = level.load(Ordering::Relaxed);
101-
while !abort.load(Ordering::SeqCst) {
101+
while !abort.load(Ordering::Acquire) {
102102
if cur_level < DtStream::MAX_THRES {
103103
// Get the next chunk from the generator.
104104
let mut data = cache_cons.pull(chunk_size);
@@ -202,12 +202,12 @@ impl DtStream {
202202
/// Does nothing, if the thread is not running.
203203
fn stop(&mut self) {
204204
self.is_active = false;
205-
self.abort.store(true, Ordering::SeqCst);
205+
self.abort.store(true, Ordering::Release);
206206
self.wake_thread();
207207
if let Some(thread_join) = self.thread_join.take() {
208208
thread_join.join().expect("Thread join failed");
209209
}
210-
self.abort.store(false, Ordering::SeqCst);
210+
self.abort.store(false, Ordering::Release);
211211
}
212212

213213
/// Spawn the worker thread.
@@ -217,9 +217,9 @@ impl DtStream {
217217
assert!(self.thread_join.is_none());
218218

219219
// Initialize thread communication
220-
self.abort.store(false, Ordering::SeqCst);
221-
self.error.store(false, Ordering::SeqCst);
222-
self.level.store(0, Ordering::SeqCst);
220+
self.abort.store(false, Ordering::Release);
221+
self.error.store(false, Ordering::Release);
222+
self.level.store(0, Ordering::Release);
223223
let (tx, rx) = channel();
224224
self.rx = Some(rx);
225225

0 commit comments

Comments
 (0)