Mic*_*ich 3 c++ winapi multithreading c++11 visual-studio-2015
我正在使用一些类的实例运行一个简单的操作,我想在每个类的单独线程中运行此操作.如果该类的同一实例想要再次运行该操作,则必须等待该实例中的先前操作完成.但是,类的另一个实例应该能够在第一个实例执行相同操作时启动它的操作.
我想做的是这样的:
#include <thread>
class MyClass
{
void Operation(){Sleep(10000);}
void LaunchOperation()
{
if(opThread != NULL) //Pseudo Code line
opThread.join();
opThread = std::thread(&MyClass::Operation, this);
}
std::thread opThread;
}
Run Code Online (Sandbox Code Playgroud)
但这if(opThread != NULL)条线显然不正确.
是否有正确的替代品,或者我采取了错误的方法?
感谢:D
您可能正在寻找joinable成员函数:
void f(std::thread & t)
{
if (t.joinable())
{
t.join();
}
t = std::thread(&X::foo, &obj, 1, 2, 3);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2491 次 |
| 最近记录: |