Я не очень знаком с GCancellable.
После быстрого прочтения, это похоже на иерархическую систему уведомлений.
Если это так, то да, вы можете легко смешать GCancellable
с std::thread
.
Нет простого способа сделать std::thread
отменяемым.
Это неправильно.
Тамэто не ненулевой способ сделать все отменяемые std::thread
.
Это правильно.
Проблема заключается в общем решении.Уведомление достаточно просто.Самое сложное - убедиться, что поток видит уведомление.Поток может быть заблокирован на мьютексе или IO.Вы не можете просто убить нить.Могут возникнуть все виды ошибок.
Каждая отдельная реализация может свободно внедрять свою собственную систему отмены, адаптированную к вашим конкретным потребностям.
Если вам нужно быть прерываемым из блокирующего мьютекса, убедитесь, что выиспользуйте только timed_mutexes, и вы вызываете g_cancellable_is_cancelled
достаточно часто, чтобы ваш поток отменял при необходимости.