@@ -145,11 +145,9 @@ mod test {
145
145
146
146
impl AsyncJob for TestJob {
147
147
fn run ( & mut self ) {
148
- self . finish . store ( false , Ordering :: Relaxed ) ;
149
-
150
148
println ! ( "[job] wait" ) ;
151
149
152
- while self . finish . load ( Ordering :: Relaxed ) {
150
+ while ! self . finish . load ( Ordering :: SeqCst ) {
153
151
std:: thread:: yield_now ( ) ;
154
152
}
155
153
@@ -159,7 +157,10 @@ mod test {
159
157
160
158
println ! ( "[job] done sleeping" ) ;
161
159
162
- self . v . fetch_add ( self . value_to_add , Ordering :: Relaxed ) ;
160
+ let res =
161
+ self . v . fetch_add ( self . value_to_add , Ordering :: SeqCst ) ;
162
+
163
+ println ! ( "[job] value: {}" , res) ;
163
164
}
164
165
}
165
166
@@ -179,21 +180,21 @@ mod test {
179
180
} ;
180
181
181
182
assert ! ( job. spawn( task. clone( ) ) ) ;
183
+ task. finish . store ( true , Ordering :: SeqCst ) ;
182
184
thread:: sleep ( Duration :: from_millis ( 10 ) ) ;
183
185
184
186
for _ in 0 ..5 {
185
187
println ! ( "spawn" ) ;
186
188
assert ! ( !job. spawn( task. clone( ) ) ) ;
187
189
}
188
190
189
- task. finish . store ( true , Ordering :: Relaxed ) ;
190
-
191
+ println ! ( "recv" ) ;
191
192
let _foo = receiver. recv ( ) . unwrap ( ) ;
192
193
let _foo = receiver. recv ( ) . unwrap ( ) ;
193
194
assert ! ( receiver. is_empty( ) ) ;
194
195
195
196
assert_eq ! (
196
- task. v. load( std:: sync:: atomic:: Ordering :: Relaxed ) ,
197
+ task. v. load( std:: sync:: atomic:: Ordering :: SeqCst ) ,
197
198
3
198
199
) ;
199
200
}
@@ -218,7 +219,7 @@ mod test {
218
219
} ;
219
220
220
221
assert ! ( job. spawn( task. clone( ) ) ) ;
221
- task. finish . store ( true , Ordering :: Relaxed ) ;
222
+ task. finish . store ( true , Ordering :: SeqCst ) ;
222
223
thread:: sleep ( Duration :: from_millis ( 10 ) ) ;
223
224
224
225
for _ in 0 ..5 {
@@ -229,14 +230,16 @@ mod test {
229
230
println ! ( "cancel" ) ;
230
231
assert ! ( job. cancel( ) ) ;
231
232
232
- task. finish . store ( true , Ordering :: Relaxed ) ;
233
+ task. finish . store ( true , Ordering :: SeqCst ) ;
233
234
234
235
wait_for_job ( & job) ;
235
236
237
+ println ! ( "recv" ) ;
236
238
let _foo = receiver. recv ( ) . unwrap ( ) ;
239
+ println ! ( "received" ) ;
237
240
238
241
assert_eq ! (
239
- task. v. load( std:: sync:: atomic:: Ordering :: Relaxed ) ,
242
+ task. v. load( std:: sync:: atomic:: Ordering :: SeqCst ) ,
240
243
2
241
244
) ;
242
245
}
0 commit comments