tsh*_*ang 6 linux rust rust-obsolete
当我运行以下代码时,我得到some output:
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));
}
Run Code Online (Sandbox Code Playgroud)
但如果我设置DELAY为999,我什么也得不到.我认为999和1000足够接近不会造成这样的差异,这意味着必须有其他东西在这里发生.我也试过Duration::nanoseconds(999_999和1_000_000),我看到了同样的行为.
我的平台是Linux,我几乎可以一直重现这种行为:使用999的结果some output不到1%的运行.
作为旁注,我知道这种做法是错误的.
win*_*ner 28
该sleep函数以1毫秒的增量休眠,如果毫秒数小于1,则根本不休眠.以下是代码的相关摘录:
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);
}
Run Code Online (Sandbox Code Playgroud)
在你的代码中,999微秒使它根本不睡眠,并且主线程在生成的线程可以打印其输出之前结束.主线程以1000微秒(即1毫秒)的速度进行睡眠,使得生成的线程有机会运行.
| 归档时间: |
|
| 查看次数: |
371 次 |
| 最近记录: |