иметь работающий поток, выходящий немедленно, когда определенное событие сигнализируется

Рассмотрим следующую функцию потока:

UINT MyClass::threadFunc(LPVOID lParam)
{
// 1. Initialize stuff
// 2. Validate stuff
// 3. Do first task
// 4. Do second task
// 5. Un-initialize everything and return
}

Эта тема создается диалогом в моем приложении. Этот поток будет запущен только один раз за время существования диалога (это рабочий поток).

При возникновении некоторого асинхронного события (возможно, нажатия кнопки, какого-либо другого события, о котором сообщается, что угодно), я хочу уведомить этот поток о немедленном возврате, чтобы мой диалог мог завершиться корректно (после ожидания завершения этого потока). Я не могу просто выйти из диалога, потому что этот поток все еще будет работать.

Я относительно новичок в C ++, и вот что я подумал (псевдокод):

  1. Объемная функция потока в try-catch,
  2. При возникновении этого асинхронного события выдается исключение прерывания потока.

Это не сработало, поэтому я немного исследовал и нашел ответы, похожие на этот. Но по какой-то причине у меня есть ощущение, что есть гораздо более простой способ сделать это. Я просто хотел получить разъяснения, прежде чем приступить к реализации указанной идеи.

Спасибо!

1

Решение

Некоторый поиск, я нашел это:

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]