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

Jen*_*rer 1 c++ multithreading boost

我最近刚开始与多线程工作boost::thread,我还是有点不清楚一些细节,但是从我的理解,thread::join是当你想要的"父"线程被阻塞并等待线程完成使用(我确定它还有更多,但我相信这是一个用途).

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

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

Joh*_*nck 5

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