为什么boost :: thread :: join看似如此昂贵?

时间:2011-06-25 17:43:27

标签: c++ multithreading boost

我刚刚开始使用boost::thread进行多线程处理,我对某些细节还不太清楚,但据我所知,当你需要'父'线程时会使用thread::join阻止并等待线程完成(我确信它还有更多,但我相信这是一次使用)。

在我正在处理的程序中,我有一个线程加载了一堆资源,然后在最后一行,将其状态设置为'finished'。主线程等待此状态,然后调用join,但它似乎需要大约2秒才能解除阻塞。

这是有原因的,还是我做错了什么?

1 个答案:

答案 0 :(得分:5)

当然加入一个线程不需要两秒钟(假设系统一般不会过载)。您所看到的等待时间可能是由于孩子们在通知家长后在孩子身上做了一些其他的工作,或者是在他们轮询孩子的通知时在父母那里做的。