File tree Expand file tree Collapse file tree 1 file changed +36
-1
lines changed Expand file tree Collapse file tree 1 file changed +36
-1
lines changed Original file line number Diff line number Diff line change @@ -410,7 +410,42 @@ mod tests {
410
410
}
411
411
412
412
#[ test]
413
- fn test_condvar_timeout_wait_loop ( ) {
413
+ fn test_condvar_timeout_wait_loop_notify_one ( ) {
414
+ for _ in 0 ..ITERS {
415
+ let pair = Arc :: new ( ( Mutex :: new ( false ) , Condvar :: new ( ) ) ) ;
416
+ let mut handles = vec ! [ ] ;
417
+
418
+ for _ in 0 ..NUM_THREADS {
419
+ let pair_clone = Arc :: clone ( & pair) ;
420
+ handles. push ( thread:: spawn ( move || {
421
+ let ( lock, cvar) = & * pair_clone;
422
+ let mut mx = lock. lock ( ) ;
423
+ if cvar
424
+ . wait_for ( & mut mx, Duration :: from_millis ( 100 ) )
425
+ . timed_out ( )
426
+ {
427
+ panic ! ( "timed out" ) ;
428
+ }
429
+ } ) ) ;
430
+ }
431
+
432
+ thread:: sleep ( Duration :: from_millis ( 50 ) ) ;
433
+ {
434
+ let ( lock, cvar) = & * pair;
435
+ for _ in 0 ..NUM_THREADS {
436
+ let mut started = lock. lock ( ) ;
437
+ * started = true ;
438
+ cvar. notify_one ( ) ;
439
+ }
440
+ }
441
+
442
+ for handle in handles {
443
+ handle. join ( ) . unwrap ( ) ;
444
+ }
445
+ }
446
+ }
447
+ #[ test]
448
+ fn test_condvar_timeout_wait_loop_notify_all ( ) {
414
449
for _ in 0 ..ITERS {
415
450
let pair = Arc :: new ( ( Mutex :: new ( false ) , Condvar :: new ( ) ) ) ;
416
451
let mut handles = vec ! [ ] ;
You can’t perform that action at this time.
0 commit comments