Multithreading 阻止主线程,直到工作线程终止 我是C++新手,需要解决以下问题< /P> /* runs in context of worker thread void thread1_fun() { //body //signal_thread2_fun to unblock } /* runs in context of main thread*/ void thread2_fun() { block on worker thread1_fun and waiting //body }

Multithreading 阻止主线程,直到工作线程终止 我是C++新手,需要解决以下问题< /P> /* runs in context of worker thread void thread1_fun() { //body //signal_thread2_fun to unblock } /* runs in context of main thread*/ void thread2_fun() { block on worker thread1_fun and waiting //body },multithreading,c++11,mutex,semaphore,Multithreading,C++11,Mutex,Semaphore,我确定我需要锁定/信号量/互斥,但不确定如何锁定? 提前感谢。您可以使用std::thread::join()。 编辑:如果您不想等待线程完成,您可能正在寻找std::condition\u变量 请注意,在销毁线程之前,仍然必须调用该线程上的detach或join 编辑2:我认为一个条件变量将在您的场景中工作,因为它表示一个线程应该等待,直到收到通知 对于实现,您需要放置一个互斥锁和条件变量,因为两个线程都可以访问它们。如果两个成员变量都是同一类的成员函数,那么它们就可以工作。否则,您可以将共

我确定我需要锁定/信号量/互斥,但不确定如何锁定?
提前感谢。

您可以使用std::thread::join()。

编辑:如果您不想等待线程完成,您可能正在寻找std::condition\u变量

请注意,在销毁线程之前,仍然必须调用该线程上的detach或join

编辑2:我认为一个条件变量将在您的场景中工作,因为它表示一个线程应该等待,直到收到通知


对于实现,您需要放置一个互斥锁和条件变量,因为两个线程都可以访问它们。如果两个成员变量都是同一类的成员函数,那么它们就可以工作。否则,您可以将共享的ptr传递给包含共享数据的结构。

谢谢您的回答。我也读过关于条件变量的书,它是有效的。然而,我最初的问题有点不同。我已经编辑了我的原始问题。基本上我的原始问题,我不能执行分离或加入,因为它不是在我的程序控制。