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