qdi*_*dii 2 c++ multithreading synchronization c++-standard-library c++11
考虑这个例子:
#include <string>
#include <chrono>
#include <atomic>
#include <thread>
#include <iostream>
std::string some_variable;
void writer_thread()
{
std::this_thread::sleep_for( std::chrono::seconds( 1 ) );
some_variable = "done";
}
int main()
{
{
std::thread w( &writer_thread );
w.join();
}
std::cout << some_variable;
}
Run Code Online (Sandbox Code Playgroud)
我是否有必要添加同步机制以确保some_variable正确读取main()?
换句话说:连接或破坏std::thread对象是否意味着刷新与其局部变量相关联的存储器?
Mik*_*our 10
join提供必要的同步.成功后执行的任何操作join都将与线程在结束之前执行的任何操作正确同步.
从标准(C++ 11 30.3.1.5 [thread.thread.member]/5),指定行为thread::join:
同步:通过
*this与相应的成功join()返回同步表示的线程的完成.
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |