blob: 2bf9c37d491e65a3786b41236bfdbdb0c4ef588a [file] [log] [blame]
Jakub Kotura1fea562020-12-21 17:28:14 +01001use std::thread::sleep;
2use std::time::Duration;
3use std::u32;
4
5use crossbeam_utils::sync::Parker;
6use crossbeam_utils::thread;
7
8#[test]
9fn park_timeout_unpark_before() {
10 let p = Parker::new();
11 for _ in 0..10 {
12 p.unparker().unpark();
13 p.park_timeout(Duration::from_millis(u32::MAX as u64));
14 }
15}
16
17#[test]
18fn park_timeout_unpark_not_called() {
19 let p = Parker::new();
20 for _ in 0..10 {
Joel Galenson2e996282021-04-01 15:39:07 -070021 p.park_timeout(Duration::from_millis(10))
Jakub Kotura1fea562020-12-21 17:28:14 +010022 }
23}
24
25#[test]
26fn park_timeout_unpark_called_other_thread() {
27 for _ in 0..10 {
28 let p = Parker::new();
29 let u = p.unparker().clone();
30
31 thread::scope(|scope| {
32 scope.spawn(move |_| {
33 sleep(Duration::from_millis(50));
34 u.unpark();
35 });
36
Joel Galenson2e996282021-04-01 15:39:07 -070037 p.park_timeout(Duration::from_millis(u32::MAX as u64))
Jakub Kotura1fea562020-12-21 17:28:14 +010038 })
39 .unwrap();
40 }
41}