LINUX.ORG.RU

История изменений

Исправление Softwayer, (текущая версия) :

https://en.cppreference.com/w/cpp/thread/stop_token
https://en.cppreference.com/w/cpp/thread/jthread

С «внезапно» действительно не очень вяжется, но если хочется graceful shutdown, то оно.

С системными API оно, правда, дружит никак (да и внутри стандартной библиотеки единственный вид ожидания, который так прерывается — condition_variable_any::wait), какие-то попытки скрестить ежа с ужом существуют, но не знаю насколько оно production ready.

Альтернатива — pthread_cancel, в принципе это рабочий подход, если реализация pthread раскручивает стек (в musl вроде не так) и код готов к тому, что из довольно неожиданных могут вылетать исключения, которые нельзя не пробросить дальше (в частности, если зовёшь что-то содержащее cancellation point в noexcept функции — например, делаешь close() в деструкторе — ты проиграл).

Исходная версия Softwayer, :

https://en.cppreference.com/w/cpp/thread/stop_token
https://en.cppreference.com/w/cpp/thread/jthread

С «внезапно» действительно не очень вяжется, но если хочется graceful shutdown, то оно.

С системными API оно, правда, дружит никак (да и внутри стандартной библиотеки единственный вид ожидания, который так прерывается — condition_variable_any::wait), какие-то попытки скрестить ежа с ужом существуют, но не знаю насколько оно production ready.