2016-02-24 51 views
0

我正在寻找一种方式来调用一个提升线程(boost版本1.60,普通线程,无线程组或池)完成时的回调函数。我已阅读本Boost线程完成回调可用

How can I tell reliably if a boost thread has exited its run method?

,但我需要某种形式的回调。任何想法如何做到这一点?我是否必须创建某种条件变量?

感谢您的帮助!

+1

没有定义回调'提振:: thread'整理。相反,您可以加入该线程,然后调用您想要的任何回调。 – SergeyA

+0

感谢您的回复。我猜是这样。我想我最终会用这个或者创建一个条件变量。谢谢! – gilgamash

+0

我不明白这个问题?如果你想知道一个线程什么时候回调完成,让它在退出之前把你的回调函数作为最后一行。 –

回答

1

最简单的解决办法是换你原来的线程功能:

#include <boost/thread.hpp> 
#include <iostream> 

void callback() 
{ 
    std::cout << "callback invoked" << std::endl; 
} 

void orig_thread_func() 
{ 
    std::cout << "thread function invoked" << std::endl; 
} 

void wrapper(void (*func)()) 
{ 
    func();  // invoke your original thread function 
    callback(); // invoke callback 
} 

int main() 
{ 
    boost::thread t(&wrapper, &orig_thread_func); 
    t.join(); 
    return 0; 
}