Pie*_*ier 8 c++ multithreading boost-thread
我有一个方法,每30秒aprox发射一次.我需要一个线程.
我有一个方法,我可以从课外调用.像callThreadedMethod()这样的东西,它创建自己调用最终的threadedMethod的线程.
这些是MyClass的方法
void callThreadedMethod(){
mThread = boost::shared_ptr<boost::thread>(new boost::thread(&MyClass::threadedMethod, this));
}
void threadedMethod(){
//more code NOT inside a while loop
}
Run Code Online (Sandbox Code Playgroud)
那么每次调用方法时我都必须分离mThread吗?
在MyClass析构函数中调用join()是否足够?
threadMethod完成后,线程是否会自行销毁?
Ala*_*kes 14
这取决于你想要达到的目标.如果您不关心何时或是否要threadedMethod终止,或者他们是否抛出,那么您可以detach在创建它时立即使用该线程; 方法完成时,每个线程都将被销毁.并且您不应该将线程存储在成员变量中.
如果你关心那么你需要调用join你创建的每个线程(因此每个线程一次,而不是在析构函数中一次).我怀疑你没有.
你真的需要为每个电话创建一个新线程吗?线程创建可能很昂贵,因此另一种方法是使用线程池并将每个threadedMethod调用提交给它.然后,池可以具有MyClass的生命周期instance.但也许这对于每30年才发生一次的事情来说太过分了.
| 归档时间: |
|
| 查看次数: |
9260 次 |
| 最近记录: |