超出范围时,Boost线程似乎会阻塞

时间:2013-10-30 14:48:15

标签: c++ multithreading boost

我对Boost 1.54线程有一个奇怪的问题,当线程对象超出范围时似乎会阻塞。

背景:我正在开发一个通过API调用使用外部硬件的实时应用程序。其中一些API调用会阻塞直到执行。这就是为什么我想在不同的线程中调用它们以避免阻塞我的主线程。简化结构如下:

void some_func(){
    //t2
    boost::thread t(&blocking_call);
    //t3
}

int main(){
    //t1
    some_func();
    //t4
    return 0;
}

幸运的是,外部硬件有一个板载时钟,因此我能够精确地执行我的程序。

我观察到:t1,t2和t3是 - 正如预期的那样 - 只增加了一点点,但是t4总是在API调用的执行时间之后不久(这对我来说太晚了) )。好像线程对象在超出范围时调用了join(),虽然我认为它应该分离并完成它的工作。

任何提示可能是什么问题?

0 个答案:

没有答案