Я пишу приложение Gtk-rs. У меня есть фоновый поток, отправляющий события в основной поток Gtk через канал MPS C. Что мне делать с неустранимыми ошибками внутри фонового потока?
Я не хочу их обрабатывать ( В пани c! Или Не в пани c! ).
В настоящее время поток будет pani c, но основное приложение не остановится. Я бы хотел, чтобы все приложение обработало sh с ошибкой.
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)
});
- Я не хочу отправлять Result через канал, потому что он не будет работать для паники в вызываемых functions.
- Присоединение к потоку решит проблему, но я не думаю, что смогу сделать это с помощью Gtk-rs, поскольку он блокирует.
Этот вопрос похож на Как я могу заставить pani c в потоке немедленно завершить основной поток? , но мне интересно, есть ли лучшее решение для Gtk-rs.