c ++ future调用局部变量

时间:2014-11-11 01:57:04

标签: c++ concurrency future

当使用C ++ future调用函数时,如果我定义2个未来对象a,b并调用相同的函数foo

 a = async(launch::async,foo);
 b = async(launch::async,foo);

是否与运行该功能两次相同?

foo()
foo()

即。是ab分别运行foo的私人副本?

1 个答案:

答案 0 :(得分:0)

它们使用与此示例所示相同的功能。

void foo()
{
    static int counter=0;
    cout<<counter++<<endl;
    return;
}

int main()
{
  std::future<void> resultA(async(launch::async,foo));
  resultA.get();

  std::future<void> resultB(async(launch::async,foo));
  resultB.get();

  return 0;
}

输出:

0

1

这表明使用相同的静态计数器变量bcz输出不是0,0而是0, 1 (随着进入foo而递增)

希望有所帮助,