Как мне прекратить / остановить все остальные потоки, когда я ловлю значение спецификаций c в одном из потоков выполнения (в activemq cpp)? - PullRequest
0 голосов
/ 19 февраля 2020

Я параллельно запустил 5 потоков, которые вызывают специфику c функции. Если один из них возвращает какое-либо указанное значение c, мне нужно прекратить дальнейшую обработку всех остальных оставшихся потоков, и функция спецификатора c вызывается асинхронно в методе onMessage () .

1 Ответ

1 голос
/ 19 февраля 2020

Передайте std::atomic<bool>& terminate_flag во все запущенные темы. Когда один процесс найдет искомое значение, обновите terminate_flag. Все потоки должны работать бесконечно l oop? Измените l oop, чтобы выйти, когда для terminate_flag установлено значение true.

void thread_function(std::atomic<bool>& terminate_flag, T& search_value, ...)
{
    while(terminate_flag == false)
    {
        ...do stuff...
        if (found_value == search_value)
        {
            terminate_flag = true;
        }
    }
}
...