实现“在 panic 时解除所有线程”的最不可怕的方法是什么?我想让每个线程(尝试)优雅地死于 panic 和 SIGINT(并注意到 SIGKILL?)。
似乎没有 Rust 中断线程的方法,所以我想我会实现一个类似于 runOneStep
的特性,让我的线程检查一个 bool 值或查看 libc 中断处理。
我看过 How can I cause a panic on a thread to immediately end the main thread? ,这基本上是设置 panic=abort
的 hacky 方式。
我也看过 Thread::cancel() support .
最佳答案
你不能在 SIGKILL 上做任何优雅的事情。这就是 SIGKILL 的意思。有一个不那么严格的杀戮,我认为它叫做 ABORT。 (我是一个老派,我用他们的数字来指代他们:我认为 kill 是 9,abort 是 15。)
关于multithreading - 如何解除 panic 中的所有线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38678360/