我正在编写一个 Gtk-rs 应用程序。我有一个后台线程通过 MPSC 通道向 Gtk 主线程发送事件。我应该如何处理这个后台线程中不可恢复的错误?
我不想处理它们(恐慌!或不恐慌!)。
目前,线程会恐慌,但主应用程序不会停止。我希望整个应用程序因错误而崩溃。
let (sender, receiver) = glib::MainContext::channel(glib::PRIORITY_DEFAULT);
// Spawn the thread and move the sender in there
thread::spawn(move || {
loop {
let msg = do_work().unwrap();
sender.send(msg).unwrap();
}
});
receiver.attach(None, move |msg| {
...
glib::Continue(true)
});
- 我不想通过通道发送结果,因为它不适用于调用函数中的恐慌。
- 加入线程可以解决问题,但我认为我不能用 Gtk-rs 来做,因为它是阻塞的。
这个问题类似于如何在线程上引起恐慌以立即结束主线程?,但我想知道 Gtk-rs 有更好的解决方案。