我有一个创建线程的应用程序,它将监听传入的连接。主线程将做其他事情。
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需要做什么?
答案 0 :(得分:3)
您的应用程序在线程有机会完成其工作之前终止(通过离开main())。一旦实现了等待连接循环,问题就会得到解决。所以,不需要做任何事情。