0
我正在寻找一种方式来调用一个提升线程(boost版本1.60,普通线程,无线程组或池)完成时的回调函数。我已阅读本Boost线程完成回调可用
How can I tell reliably if a boost thread has exited its run method?
,但我需要某种形式的回调。任何想法如何做到这一点?我是否必须创建某种条件变量?
感谢您的帮助!
我正在寻找一种方式来调用一个提升线程(boost版本1.60,普通线程,无线程组或池)完成时的回调函数。我已阅读本Boost线程完成回调可用
How can I tell reliably if a boost thread has exited its run method?
,但我需要某种形式的回调。任何想法如何做到这一点?我是否必须创建某种条件变量?
感谢您的帮助!
最简单的解决办法是换你原来的线程功能:
#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;
}
没有定义回调'提振:: thread'整理。相反,您可以加入该线程,然后调用您想要的任何回调。 – SergeyA
感谢您的回复。我猜是这样。我想我最终会用这个或者创建一个条件变量。谢谢! – gilgamash
我不明白这个问题?如果你想知道一个线程什么时候回调完成,让它在退出之前把你的回调函数作为最后一行。 –