线程同步:等待两个bool变量

tzi*_*ppy 0 c++ multithreading thread-safety thread-synchronization

我想bool在一个线程中等待两个变量为真.他们在不同的地方改变.我可以在我的项目中使用boost,但不能在C++ 11中使用boost.我确实找到了有关如何使用互斥锁和条件变量的信息,但我不确定是否可以等待两个互斥锁.这是我的程序的一些伪代码.

bool job1_dataready, job2_dataready;

//t1:
void job1()
{
   //do stuff
   job1_dataready = true;
}

//t2:
void job2()
{
   //do stuff
   job2_dataready= true;
}

main()
{
 boost::thread t1(job1);
 boost::thread t1(job2);

 if(job1_dataready&& job2_dataready)
 {
    //do stuff with data from both jobs
 }

}
Run Code Online (Sandbox Code Playgroud)

And*_* R. 6

从我看到的,你不需要bool变量,使用std :: thread :: join代替:

main() {
    std::thread t1(job1);
    std::thread t1(job2);
    t1.join();
    t2.join();
    // do jobs after threads t1 and t2 finish working
}
Run Code Online (Sandbox Code Playgroud)