我有一个创建线程的应用程序,它将监听传入的连接。主线程将做其他事情。Boost Thread - 创建一个没有连接的线程()
boost::mutex mutex;
void
ThreadFunction(int port, int(*callbackFunc)(int, int))
{
mutex.lock();
std::cout << "Cannot get to this point" << std::endl;
mutex.unlock();
Application app;
app.run(port, callbackFunc);
}
void
Init(int port, int(*callbackFunc)(int, int))
{
std::cout << callbackFunc(1,1) << std::endl;
boost::thread t(boost::bind(&ThreadFunction, port, callbackFunc));
}
int
main(){
int port = 2340;
Init(port, *callbackfunction);
return 0;
}
我遇到的问题是,它从来没有访问std::cout << "Cannot get to this point" << std::endl;
但是,如果我叫join()方法后,我创建的线程,它工作得很好,但随后被阻止的应用程序。
我需要为线程调用ThreadFunction做什么?
此外,我相信标准的说'terminate()'将会在std :: thread被销毁时被调用。 Boost的实现调用'detach()'来代替,但它可能会改变以符合未来的标准,所以让它超出范围可能不是一个好主意。 –