【发布时间】:2014-02-25 19:28:17
【问题描述】:
我读到 join 会阻塞调用它的线程,直到线程函数返回。因此,如果我的主线程创建了一个 boost 线程,然后调用 join,那么我的主线程将被阻塞。 在我的情况下,用户界面是主线程,它需要等待线程完成才能执行下一条语句,当我使用 thread.join() 时,用户界面会冻结。我目前有这样的东西
boost::thread t(&Myclass::mymethod,ptr,parameter);
t.join(); //This blocks the ui
SomeOtherMethd();
现在我的问题是如何等待线程 t 结束然后调用 SomeOtherMethod 而不阻塞 UI。由于 t.join() 似乎冻结了 ui
【问题讨论】:
-
通常的方法是让主循环继续,并检查(非阻塞)例如指示线程函数已完成工作的信号量或条件变量。