Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;线程获取每个循环的值 我最近开始学习C++,现在我正在玩多线程。 我试图做的是在循环中获取当前值_C++_Multithreading_C++11 - Fatal编程技术网

C++;线程获取每个循环的值 我最近开始学习C++,现在我正在玩多线程。 我试图做的是在循环中获取当前值

C++;线程获取每个循环的值 我最近开始学习C++,现在我正在玩多线程。 我试图做的是在循环中获取当前值,c++,multithreading,c++11,C++,Multithreading,C++11,像这样: std::atomic_int res(0); void testThread(void){ for(int i = 0; i < 5; i++) res += i; } int main(void){ std::thread t(testThread); for(int i = 0; i < 5; i++){ std::cerr << "res : " << res << std::endl; }

像这样:

std::atomic_int res(0);
void testThread(void){
  for(int i = 0; i < 5; i++)
    res += i;
}

int main(void){
  std::thread t(testThread);
  for(int i = 0; i < 5; i++){
    std::cerr << "res : " << res << std::endl;
  }
  t.join();
  return 0;
}
std::atomic_int res(0);
void测试线程(void){
对于(int i=0;i<5;i++)
res+=i;
}
内部主(空){
std::线程t(testThread);
对于(int i=0;i<5;i++){

std::cerr代码没有问题。线程函数完成得太快。下面是sleep_for()的示例:

atomic_int res=0;
螺纹t([&]
{
对于(int i=0;i<5;++i)
{
这个线程::sleep_for(chrono::seconds(1));
res+=i;
}
});
对于(int i=0;i<20;++i)
{
这个线程::sleep_for(chrono::毫秒(400));

无法在
testThread
中的循环中打印
res
的值?在打印之前加入线程。cerr?可能是std::cout开始?@NathanOliver如果我在循环中打印值,我会得到正确的结果,但我想要的是每个循环的结果在当前线程中打印,而不是在当前线程中打印testThread@DimChtz我试过了,但是没有我也是。
atomic_int res = 0;
thread t([&]
{
    for (int i = 0; i < 5; ++i)
    {
        this_thread::sleep_for(chrono::seconds(1));
        res += i;
    }
});

for (int i = 0; i < 20; ++i)
{
    this_thread::sleep_for(chrono::milliseconds(400));
    cout << "res : " << res << endl;
}

t.join();