From c4e56232ff844533320a5de4900d72d6c58ef220 Mon Sep 17 00:00:00 2001 From: Alice Ryhl Date: Thu, 12 Aug 2021 16:03:10 +0200 Subject: [PATCH] sync: use spin_loop_hint instead of yield_now in mpsc (#4037) --- tokio/src/sync/mpsc/block.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tokio/src/sync/mpsc/block.rs b/tokio/src/sync/mpsc/block.rs index 1c9ab14e9..7a0873bc4 100644 --- a/tokio/src/sync/mpsc/block.rs +++ b/tokio/src/sync/mpsc/block.rs @@ -1,6 +1,5 @@ use crate::loom::cell::UnsafeCell; use crate::loom::sync::atomic::{AtomicPtr, AtomicUsize}; -use crate::loom::thread; use std::mem::MaybeUninit; use std::ops; @@ -344,8 +343,13 @@ impl Block { Err(curr) => curr, }; - // When running outside of loom, this calls `spin_loop_hint`. - thread::yield_now(); + #[cfg(all(test, loom))] + crate::loom::thread::yield_now(); + + // TODO: once we bump MSRV to 1.49+, use `hint::spin_loop` instead. + #[cfg(not(all(test, loom)))] + #[allow(deprecated)] + std::sync::atomic::spin_loop_hint(); } } }