2016-07-30 3 views
0

「パニック時にすべてのスレッドを巻き戻す」を実装するのが最も恐ろしい方法はありますか?パニックやSIGINTで正常に死ぬ(しようとする)スレッドをすべて持っていたいと思っています(そしてSIGKILLsに気づくでしょうか?)。どのようにパニックにすべてのスレッドを巻き戻すには?

スレッドを中断するには錆びる方法がないようですので、私はrunOneStepのような特性を実装し、スレッドにブール値をチェックさせたり、libc割り込み処理を見せてもらうことを考えています。

私はHow can I cause a panic on a thread to immediately end the main thread?を見ましたが、これは基本的に設定のハッキーな方法ですpanic=abort。 私もThread::cancel() supportを見たことがあります。

+1

もう少しあなたの目標を拡大できますか?リンクされたInternalsフォーラム投稿を読んでいるので、 'Thread :: cancel'のようなものがなぜ悪い考えになるのか理解しています。プログラムを終了するだけで何が問題になったのですか? – Shepmaster

+0

私は非常に自信がありたいと思っているいくつかのスレッドでクリーンアップを実行しています。この人の健康のために別々の番組を見ることは効果がありますが、それはより複雑に感じます。 Javaのこの種のものはShutDownHookによって提供されますが、それはランタイムの魔法です。 – mfarrugi

答えて

1

SIGKILLでは何も正常に動作しません。それがSIGKILLの意味です。より厳格ではない殺しがある、私はそれがABORTと呼ばれると思う。 (私は昔の生徒です。私は数を挙げて言います:殺しは9、中止は15でした)

+0

あなたが参照することができるリソースがあれば、信号名と番号はどういうものだったのでしょうか?^ _^OPが別の信号に切り替えることを決めたら、その解決策は何ですか? – Shepmaster

+0

OPが尋ねる:*優雅に死ぬ**パニック**とsigkills *(強調私);この場合、どのような解決策がありますか? – Shepmaster

関連する問題