函数体内的静态对象的构造在多线程的情况下有可能被打断么?

fendouzhe 2017-05-05 03:50:50
比如一个单实例的实现:
A &GetInstance()
{
static A a; //是否需要在此处的前后加上锁保护呢?
return a;
}

...全文
199 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 版主 2017-05-05
  • 打赏
  • 举报
回复
不用加锁
red-fly 2017-05-05
  • 打赏
  • 举报
回复
静态是在编译时就分配好空间的,所以应该不存在“打断”的情况,但如果你在一个线程中改变了值,那在另一个线程中就会看到变化,当然也有可能在改变的过程中另外一个线程中看到的值可能不是预期的,比如把本来的值 1000 改成 10000,改变的过程中另外一个线程中看到的有可能不是1000,也不是10000,而是另外一个值,只不过这种概率很小,但大量运行的情况下,肯定是会碰到的
pengzhixi 2017-05-05
  • 打赏
  • 举报
回复
额 我记得c++11是不会的。

64,687

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧