multithreading - 如何解除 panic 中的所有线程?

标签 multithreading rust panic

实现“在 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/

相关文章:

javascript - JavescriptInterface 和线程不返回主线程

logging - 在 golang 中捕获 panic()

rust - 为什么 panic 时 panic 会导致非法指令?

recursion - 有没有办法优化这段代码,使其不会溢出堆栈?

go - 如何通过锁定在 Go 中实现线程安全的映射包装器?

c# - 呈现线程上发生未指定的错误。 (NotifyPartitionIsZombie)

ruby-on-rails - 在Rails应用程序中记录内部线程

Python:对休眠线程的惩罚

rust - 为什么借用检查器不明白借用切片的不同部分从根本上是可以的?

rust - Rust 中的反 `?` 运算符(又名 return if Some/Ok)