summaryrefslogtreecommitdiffstats
path: root/library/std/src/sys/sgx/waitqueue/tests.rs
blob: bf91fdd08ed54529c171b0ba5b3a8bf52ed8b198 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
use super::*;
use crate::sync::Arc;
use crate::thread;

#[test]
fn queue() {
    let wq = Arc::new(SpinMutex::<WaitVariable<()>>::default());
    let wq2 = wq.clone();

    let locked = wq.lock();

    let t1 = thread::spawn(move || {
        // if we obtain the lock, the main thread should be waiting
        assert!(WaitQueue::notify_one(wq2.lock()).is_ok());
    });

    WaitQueue::wait(locked, || {});

    t1.join().unwrap();
}