然后,根据客户端的请求,服务器将返回所请求的信息.
我想做的是放接收器和放大器.解析器部分在一个单独的线程中,以使服务器一起运行,而不是干扰数据收集.
#include <iostream>#include <thread>class exampleClass{ std::thread *processthread; public voID completeProcess(){ while(1){ processstep1(); if (verification()){processstep2()} } }; voID processstep1(){...}; voID processstep2(){...}; bool verification(){...}; voID runThreaded();} // End example class deFinition// The IDea being that this thread runs independently// until I call the object's destructorexampleClass::runThreaded(){ std::thread processthread(&exampleClass::completeProcess,this);} // Unfortunately The program ends up crashing here with CIGARET解决方法 您正在成员函数中运行本地线程.您必须加入或分离它,因为它是本地的,您必须在函数本身中执行此 *** 作:
exampleClass::runThreaded(){ std::thread processthread(&exampleClass::completeProcess,this); // more stuff processthread.join();} //
我猜你真正想要的是启动数据成员线程而不是启动本地线程.如果你这样做,你仍然必须在某个地方加入它,例如在析构函数中.在这种情况下,您的方法应该是
exampleClass::runThreaded(){ processthread = std::thread(&exampleClass::completeProcess,this);}
和析构函数
exampleClass::~exampleClass(){ processthread.join();}
和processthread应该是一个std :: thread,而不是指向一个的指针.
关于设计的注意事项:如果要使用runThreaded方法作用于线程数据成员,则必须非常小心在连接线程之前不要多次调用它.在构造函数中启动线程并将其连接到析构函数中可能更有意义.
总结以上是内存溢出为你收集整理的C std ::成员函数的线程全部内容,希望文章能够帮你解决C std ::成员函数的线程所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)