C ++线程在函数调用后添加代码

时间:2016-05-16 16:58:28

标签: c++ multithreading

我有类似这段代码的东西

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;
});

这是正确的方法吗?还是有其他办法吗?

2 个答案:

答案 0 :(得分:0)

是的,这看起来是一种很好的方法。

不要忘记捕获somethingmaybe,并注意同步(可能会按值捕获它们吗?)。

答案 1 :(得分:0)

您需要一些机制来同步。在输出void somefunction之前,您需要确保somevalue已完成关于somevalue的所有工作,否则您可以在somefunction之前输出该值。更糟糕的是,如果某些值不能保证原子操作,你可能输出一些奇怪的东西。