我有一个简单的类让我们称之为工作者
class Worker{
Worker(){
// Initialize
}
void runWorker(){
while(1){
//Do work
}
}
}
在新线程上初始化和运行事物类的正确C ++方法是什么?
答案 0 :(得分:3)
如果您使用的是C ++ 11或更高版本,则会内置线程。
std::thread t([]() {
Worker w; // construct as normal
w.runWorker();
};
如果要在多个线程中使用相同的Worker
,可以在线程外部构造它并在lambda中捕获它。
Worker w;
std::thread t1([&w]() {
w.runWorker();
});
std::thread t2([&w]() {
w.runWorker();
});
如果您使用后一种方法,请确保w
不会超出范围,因为它是通过引用捕获的。