Можете ли вы отменить Boost Thread так же, как и pthread?Boost Thread Отмена
Я пишу простой сторожевой таймер для прекращения рабочих потоков, если они сбой, и, похоже, нет способа просто отменить поток в библиотеке Boost Thread.
Можете ли вы отменить Boost Thread так же, как и pthread?Boost Thread Отмена
Я пишу простой сторожевой таймер для прекращения рабочих потоков, если они сбой, и, похоже, нет способа просто отменить поток в библиотеке Boost Thread.
Они не поддерживают отмену, что хорошо, поскольку это может вызвать всевозможные тонкие проблемы.
Посмотрите на раздел документов, которые охватывают прерывание потока и исключение boost_interrupted boost :: thread, и способ, который позволяет вам выполнить то, что вы хотите, а также очищать вещи.
Они не поддерживают отмены из коробки (как указал Duck), однако в зависимости от обработки происходит внутри вашего рабочего потока (ов), я бы рассмотреть вопрос об использовании boost::condition
уведомить нить что он должен закончить (чисто) при первой же возможности.
Похоже, что прерывание прерывания потока не поможет вам, если поток застревает в цикле, что является одной из вещей, которые я пытаюсь защитить. Пока я отказываюсь от переносимости, я начинаю думать, что мне лучше всего использовать обработчик очистки pthread. –
Или положите точку прерывания где-нибудь в цикле (-ах). Это не должно сильно повлиять на производительность, особенно если поток уже давно работает. И остальная инфраструктура прерывания уже существует. – Duck