gpt4 book ai didi

linux - 为什么 999µs 太短而 1000µs 恰到好处?

转载 作者:IT王子 更新时间:2023-10-29 00:38:25 26 4
gpt4 key购买 nike

当我运行以下代码时,我得到了一些输出:

use std::thread::Thread;

static DELAY: i64 = 1000;

fn main() {
Thread::spawn(move || {
println!("some output");
});

std::io::timer::sleep(std::time::duration::Duration::microseconds(DELAY));
}

但是如果我将 DELAY 设置为 999,我什么也得不到。我认为 999 和 1000 足够接近,不会造成这样的差异,这意味着这里一定有其他事情发生。我也尝试过使用 Duration::nanoseconds(999_999 和 1_000_000),我看到了相同的行为。

我的平台是 Linux,我几乎总是可以重现此行为:使用 999 导致 一些输出 的运行次数不到 1%。


作为旁注,我知道这种方法 is wrong .

最佳答案

sleep 函数以 1 毫秒为增量休眠,如果毫秒数小于 1,则根本不休眠。这是相关的excerpt from the code :

pub fn sleep(&mut self, duration: Duration) {
// Short-circuit the timer backend for 0 duration
let ms = in_ms_u64(duration);
if ms == 0 { return }
self.inner.sleep(ms);
}

在您的代码中,999 微秒使它根本没有休眠,并且主线程在生成的线程可以打印其输出之前结束。在 1000 微秒(即 1 毫秒)后,主线程进入休眠状态,让衍生线程有机会运行。

关于linux - 为什么 999µs 太短而 1000µs 恰到好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27803491/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com