我有类似这段代码的东西
class Someclass{
int somevalue;
void somefunction(int& arg1, bool& arg2);
}
int main(){
Someclass someobject;
int something;
bool maybe;
thread t(...);
}
我想创建一个线程,使用参数int'something'调用'someobject的void,然后bool'也许'。除此之外,线程还应该在执行函数后cout类的int。我无法将cout直接写入成员函数,因为我需要cout是可选的。
我来到了这个
thread t([&someobject] () {
someobject.somefunction(something, maybe);
cout << Value: << someobject.somevalue << endl;
});
这是正确的方法吗?还是有其他办法吗?
答案 0 :(得分:0)
是的,这看起来是一种很好的方法。
不要忘记捕获something
和maybe
,并注意同步(可能会按值捕获它们吗?)。
答案 1 :(得分:0)
您需要一些机制来同步。在输出void somefunction
之前,您需要确保somevalue
已完成关于somevalue
的所有工作,否则您可以在somefunction
之前输出该值。更糟糕的是,如果某些值不能保证原子操作,你可能输出一些奇怪的东西。