@@ -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