创建一个没有join()的线程
Boost Thread - Create a Thread without join()
我有一个创建线程的应用程序,它将侦听传入的连接。主线程会做其他的事情。
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循环,问题就解决了。所以,不需要做任何事情
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 在std::thread中,joinable()然后join()线程安全吗
- std::thread::join() 可以从非父线程调用吗?
- 使用 vector<thread> 和 .join() 未并行运行的多线程C++程序
- 在我调用join()之前,std ::线程运行
- 线程:join上是否存在具有synchronized with relationship的隐式内存障碍
- 线程已退出,代码为 1:Join() 和 Detach()
- 当不调用thread.join()时,C 多线程异常
- 在 closuer join() 线程C++之前更新 joinable()
- 是否可以获取主线程的线程对象,并用它“join()”
- 父线程 join():块直到子线程完成
- join() 是否释放了分配的内存?- C++11 线程
- 在 join() 上提升线程分段错误
- 使用 join() 从不同范围运行C++线程
- 创建一个没有join()的线程
- Boost::调用join时发生线程访问冲突
- c++ 11线程是可连接的,但join()会引发异常
- .join() 在 main() 线程中发生异常后
- 为什么这个简单的线程c++程序在退出时崩溃,除非我调用thread.join()
- 如何在C++中调用一个线程"join()"另一个函数的方法?