创建一个没有join()的线程

Boost Thread - Create a Thread without join()

本文关键字:join 线程 一个 创建      更新时间:2023-10-16

我有一个创建线程的应用程序,它将侦听传入的连接。主线程会做其他的事情。

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做什么?

应用程序在线程有机会完成其工作之前终止(通过离开main())。一旦实现了wait-for-connections循环,问题就解决了。所以,不需要做任何事情