Skip to content

Commit d7ee29a

Browse files
committed
fix test code
1 parent 2b44c1b commit d7ee29a

File tree

1 file changed

+24
-24
lines changed

1 file changed

+24
-24
lines changed

src/sync/spin_lock.rs

+24-24
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,6 @@ use std::sync::atomic::{AtomicBool, Ordering};
55
use crossbeam_utils::Backoff;
66

77
/// A simple spinlock.
8-
///
9-
/// ```
10-
/// # async_std::task::block_on(async {
11-
/// #
12-
/// use async_std::sync::{Arc, Spinlock};
13-
/// use async_std::task;
14-
///
15-
/// let m = Arc::new(Spinlock::new(0));
16-
/// let mut tasks = vec![];
17-
///
18-
/// for _ in 0..10 {
19-
/// let m = m.clone();
20-
/// tasks.push(task::spawn(async move {
21-
/// *m.lock() += 1;
22-
/// }));
23-
/// }
24-
///
25-
/// for t in tasks {
26-
/// t.await;
27-
/// }
28-
/// assert_eq!(*m.lock(), 10);
29-
/// #
30-
/// # })
31-
/// ```
328
#[derive(Debug)]
339
pub struct Spinlock<T> {
3410
locked: AtomicBool,
@@ -94,3 +70,27 @@ impl<'a, T> DerefMut for SpinlockGuard<'a, T> {
9470
unsafe { &mut *self.parent.value.get() }
9571
}
9672
}
73+
74+
#[test]
75+
fn spinlock() {
76+
crate::task::block_on(async {
77+
use crate::sync::{Arc, Spinlock};
78+
use crate::task;
79+
80+
let m = Arc::new(Spinlock::new(0));
81+
let mut tasks = vec![];
82+
83+
for _ in 0..10 {
84+
let m = m.clone();
85+
tasks.push(task::spawn(async move {
86+
*m.lock() += 1;
87+
}));
88+
}
89+
90+
for t in tasks {
91+
t.await;
92+
}
93+
assert_eq!(*m.lock(), 10);
94+
95+
})
96+
}

0 commit comments

Comments
 (0)