本文简要介绍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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。