【发布时间】:2011-06-25 17:43:26
【问题描述】:
我最近刚开始使用boost::thread 进行多线程处理,我对一些细节还有些不清楚,但据我了解,当您希望“父”线程阻塞并等待时使用thread::join让线程完成(我相信它不止于此,但我相信这是一种用途)。
在我正在处理的程序中,我有一个线程加载一堆资源,然后在最后一行,将其状态设置为“完成”。主线程等待这个状态,然后调用join,但它似乎需要大约2秒才能解除阻塞。
这是有原因的,还是我做错了什么?
【问题讨论】:
-
如何等待状态变为“完成”?
-
@nos:我忘了提到我正在使用线程类,它有一个存储状态的成员变量,主线程检查该状态。那部分似乎工作正常。主线程快速获取更新状态,但调用join时,会暂停一下。
-
好吧,如果你正忙着旋转等待状态改变,那很糟糕(虽然不太可能不是延迟的原因)。
-
向我们展示线程的代码。
-
@nos:嗯,状态检查发生在我的主程序循环期间,所以它仍然检查用户输入,处理事件等,所以“空闲”是故意的(因为我需要这些资源来继续),但我使用线程的原因是因为我不想让窗口冻结并且在那段时间没有响应。
标签: c++ multithreading boost