C++ 当我在一个线程执行(在activemq cpp中)中捕获特定值时,如何终止/停止所有其他线程?

C++ 当我在一个线程执行(在activemq cpp中)中捕获特定值时,如何终止/停止所有其他线程?,c++,multithreading,activemq,activemq-cpp,C++,Multithreading,Activemq,Activemq Cpp,我已经并行启动了5个线程,它们正在调用特定的函数。如果其中一个返回某些特定值,我需要终止对所有其他剩余线程的进一步处理,并在onMessage()方法中异步调用特定函数。将std::atomic&terminate_标志传递给所有启动的线程。当一个进程找到搜索的值时,更新终止\u标志。所有线程都应该运行无限循环?修改循环以在terminate\u标志设置为true时退出 void thread_function(std::atomic<bool>& terminate_fla

我已经并行启动了5个线程,它们正在调用特定的函数。如果其中一个返回某些特定值,我需要终止对所有其他剩余线程的进一步处理,并在onMessage()方法中异步调用特定函数。

std::atomic&terminate_标志传递给所有启动的线程。当一个进程找到搜索的值时,更新
终止\u标志
。所有线程都应该运行无限循环?修改循环以在
terminate\u标志设置为
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;
        }
    }
}
void thread_函数(标准::原子和终止标志,T和搜索值,…)
{
while(terminate_flag==false)
{
…做事。。。
如果(找到值==搜索值)
{
终止标志=真;
}
}
}

但即使使用此功能,thread_函数也会在每个线程中至少运行一次,对吗@如果一个线程恰好在第二个线程开始之前找到了值,那么第二个线程将不会运行。嗯,它将运行,但是
terminate\u flag
将设置为
true
,它将跳过循环中的所有内容,然后终止。