「パニック時にすべてのスレッドを巻き戻す」を実装するのが最も恐ろしい方法はありますか?パニックやSIGINTで正常に死ぬ(しようとする)スレッドをすべて持っていたいと思っています(そしてSIGKILLsに気づくでしょうか?)。どのようにパニックにすべてのスレッドを巻き戻すには?
スレッドを中断するには錆びる方法がないようですので、私はrunOneStep
のような特性を実装し、スレッドにブール値をチェックさせたり、libc割り込み処理を見せてもらうことを考えています。
私はHow can I cause a panic on a thread to immediately end the main thread?を見ましたが、これは基本的に設定のハッキーな方法ですpanic=abort
。 私もThread::cancel() supportを見たことがあります。
もう少しあなたの目標を拡大できますか?リンクされたInternalsフォーラム投稿を読んでいるので、 'Thread :: cancel'のようなものがなぜ悪い考えになるのか理解しています。プログラムを終了するだけで何が問題になったのですか? – Shepmaster
私は非常に自信がありたいと思っているいくつかのスレッドでクリーンアップを実行しています。この人の健康のために別々の番組を見ることは効果がありますが、それはより複雑に感じます。 Javaのこの種のものはShutDownHookによって提供されますが、それはランタイムの魔法です。 – mfarrugi