【发布时间】:2022-01-03 23:16:05
【问题描述】:
我正在编写一个 Rust 程序,它每 2 秒执行一次操作。该程序还使用ctrlc crate 来处理中断。但是,在某些情况下,我必须等待最多 2 秒才能终止进程。我正在使用默认的std::thread::sleep 函数,我似乎无法中断。
我的问题来了。我可以让我的程序以可中断的方式休眠吗?换句话说,Rust 是否具有中断睡眠程序的默认功能?我知道当收到 SIGINT 信号时,C 会自动中断任何睡眠功能。
【问题讨论】:
-
你能分享一个 sn-p 来复制你的问题吗?信号处理程序在捕获 SIGINT 时是否退出进程?当a)在主线程上休眠或b)在生成的线程上休眠并在主线程上加入()时,我无法重现该问题。程序等待睡眠到期的唯一时间是
ctrlc处理程序没有调用std::process::exit
标签: multithreading rust sleep sigint