diff --git a/tokio/src/runtime/scheduler/multi_thread/queue.rs b/tokio/src/runtime/scheduler/multi_thread/queue.rs index 39e50eddc..44a66c3a1 100644 --- a/tokio/src/runtime/scheduler/multi_thread/queue.rs +++ b/tokio/src/runtime/scheduler/multi_thread/queue.rs @@ -298,7 +298,7 @@ impl Local { if self .inner .head - .compare_exchange( + .compare_exchange_weak( prev, pack( head.wrapping_add(NUM_TASKS_TAKEN), @@ -387,7 +387,7 @@ impl Local { let res = self .inner .head - .compare_exchange(head, next, AcqRel, Acquire); + .compare_exchange_weak(head, next, AcqRel, Acquire); match res { Ok(_) => break real as usize & MASK, @@ -523,7 +523,7 @@ impl Steal { let res = self .0 .head - .compare_exchange(prev_packed, next_packed, AcqRel, Acquire); + .compare_exchange_weak(prev_packed, next_packed, AcqRel, Acquire); match res { Ok(_) => break n, @@ -572,17 +572,11 @@ impl Steal { let res = self .0 .head - .compare_exchange(prev_packed, next_packed, AcqRel, Acquire); + .compare_exchange_weak(prev_packed, next_packed, AcqRel, Acquire); match res { Ok(_) => return n, - Err(actual) => { - let (actual_steal, actual_real) = unpack(actual); - - assert_ne!(actual_steal, actual_real); - - prev_packed = actual; - } + Err(actual) => prev_packed = actual, } } }