You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++标准是否保证线程读取创建前修改的全局变量的一致性?

问题解答

结论:C++标准可以保证所有线程都会输出"hello",不存在主线程对g的赋值延迟到线程创建之后的情况。

原因如下:

  • C++标准明确规定,线程创建操作(对应伪代码中的create_thread,即标准库的std::thread构造)是一个同步点。主线程在创建线程之前完成的所有内存写入操作,对新创建的线程的后续读取操作是可见且有序的。
  • 具体到这个场景,主线程里的g = 1写操作**先行发生于(happens-before)**新线程的启动,自然也先行发生于新线程中对g的读操作。这意味着新线程执行fn时,必然能读取到g = 1的结果,不会读到初始值0。

内容的提问来源于stack exchange,提问作者konchy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 09:01:08