Use atomic swap to ensure only 1 wake operation procedes
This commit is contained in:
parent
efc736f88d
commit
3aa0f237b3
1 changed files with 1 additions and 1 deletions
|
@ -207,7 +207,7 @@ struct SafeWaker {
|
|||
impl Wake for SafeWaker {
|
||||
fn wake(self: std::sync::Arc<Self>) {
|
||||
if let Some(task) = Weak::upgrade(&self.task) {
|
||||
if !task.woken.load(Ordering::Acquire) {
|
||||
if !task.woken.swap(true, Ordering::AcqRel) {
|
||||
if let Some(runtime) = Weak::upgrade(&self.runtime) {
|
||||
let mut inner = runtime.lock().unwrap();
|
||||
inner.wake(task);
|
||||
|
|
Loading…
Reference in a new issue