jwd*_*jwd 23 c++ multithreading
我想大致这样做:
初始线程:
std::atomic<>。其他线程:
现在,我知道我可以将参数传递给std::thread,但我试图通过这个例子来理解 C++ 的内存保证。
此外,我非常有信心,在任何现实世界的实现中,创建线程都会导致内存障碍,确保线程可以“看到”父线程在此之前编写的所有内容。
但我的问题是:这是由标准保证的吗?
旁白:我想我可以添加一些虚拟的东西std::atomic<int>,并在启动其他线程之前写入,然后在其他线程上,在启动时读取一次。我相信所有的happens-before 机制都可以保证先前编写的全局状态是正确可见的。
但我的问题是,技术上是否需要这样的东西,或者线程创建是否足够?
Nat*_*ica 27
创建线程就足够了。每个[thread.thread.constr]/7在线程构造函数和新线程的开始之间有一个同步点
同步:构造函数调用的完成与 的副本调用的开始同步
f。
这意味着在产生新线程之前线程中的所有状态对产生的线程都是可见的。