【问题标题】:C++ threads add code after function callC++线程在函数调用后添加代码
【发布时间】:2016-05-16 16:58:28
【问题描述】:

我有类似这段代码

class Someclass{
int somevalue;
void somefunction(int& arg1, bool& arg2);    
}

int main(){
Someclass someobject;
int something;
bool maybe;

thread t(...);
}

我想创建一个线程,用参数 int 'something' 和 bool 'maybe' 调用 'someobject's void。除此之外,线程还应该在执行函数后计算类的 int。我不能将 cout 直接写入成员函数,因为我需要 cout 是可选的。

我来了

thread t([&someobject] () {
    someobject.somefunction(something, maybe);
    cout << Value: << someobject.somevalue << endl;
});

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

【问题讨论】:

    标签: c++ multithreading


    【解决方案1】:

    是的,这看起来是个不错的方法。

    不要忘记捕获somethingmaybe,并注意同步(也许按值捕获它们?)。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-08
        • 1970-01-01
        • 1970-01-01
        • 2013-07-24
        • 1970-01-01
        • 2013-05-26
        相关资源
        最近更新 更多