本文簡要介紹rust語言中 Function std::thread::yield_now
的用法。
用法
pub fn yield_now()
合作放棄時間片給 OS 調度程序。
這會調用底層操作係統調度程序的 yield 原語,表示調用線程願意放棄其剩餘的時間片,以便操作係統可以在 CPU 上調度其他線程。
在循環中讓步的一個缺點是,如果操作係統沒有任何其他準備好的線程可以在當前 CPU 上運行,則該線程將有效地 busy-wait,這會浪費 CPU 時間和精力。
因此,在等待感興趣的事件時,程序員的首選應該是使用同步設備,例如 channel
s、 Condvar
s、 Mutex
es 或 join
,因為這些原語是以阻塞方式實現的,給出啟動 CPU,直到發生感興趣的事件,以避免重複讓步。
因此,yield_now
應該很少使用,主要是在需要重複輪詢的情況下,因為沒有其他合適的方法可以了解何時發生了感興趣的事件。
例子
use std::thread;
thread::yield_now();
相關用法
- Rust UdpSocket.set_multicast_loop_v6用法及代碼示例
- Rust i64.overflowing_add_unsigned用法及代碼示例
- Rust Box.downcast用法及代碼示例
- Rust BTreeMap.last_key_value用法及代碼示例
- Rust str.make_ascii_uppercase用法及代碼示例
- Rust u128.checked_pow用法及代碼示例
- Rust usize.wrapping_mul用法及代碼示例
- Rust AtomicU8.fetch_sub用法及代碼示例
- Rust PanicInfo.payload用法及代碼示例
- Rust MaybeUninit.assume_init_mut用法及代碼示例
- Rust String.try_reserve用法及代碼示例
- Rust Mutex.new用法及代碼示例
- Rust f32.exp用法及代碼示例
- Rust Result.unwrap_or_else用法及代碼示例
- Rust slice.sort_unstable_by_key用法及代碼示例
- Rust Formatter.precision用法及代碼示例
- Rust i128.log2用法及代碼示例
- Rust OsStr.to_ascii_uppercase用法及代碼示例
- Rust f32.hypot用法及代碼示例
- Rust RefCell.try_borrow_unguarded用法及代碼示例
- Rust i16.log10用法及代碼示例
- Rust LowerExp用法及代碼示例
- Rust HashSet.get_or_insert_with用法及代碼示例
- Rust Bound.cloned用法及代碼示例
- Rust NonZeroU128.checked_pow用法及代碼示例
注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 Function std::thread::yield_now。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。