为了账号安全,请及时绑定邮箱和手机立即绑定

布尔类型的赋值操作是否是原子操作

布尔类型的赋值操作是否是原子操作

FFIVE 2018-07-30 14:15:09
布尔类型的赋值操作是否是原子操作如果不是为何原子操作类Interlocked中没有关于布尔类型的操作
查看完整描述

1 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

当然是原子操作,同时包括所有对4字节及以下类型的赋值操作,但同时要注意的是由于还有cpu的cache,因此在修改bool对象时在多核cpu上可能不同核上看到的只是自己的cache的信息而已,所以就会有类似这样的奇葩问题

var flag=true;

long x=0;

var thread=new Thread(()=>{

while(flag)

  x++;

Console.WriteLine("done");

});

thread.Start();

Thread.Sleep(100);

flag=false;

 

thread.Join();

 

因此需要给点提示不要cpu再那傻傻的看着老黄历继续做着无用功(volatile或者Thread.MemoryBarrier())


查看完整回答
反对 回复 2018-08-18
  • 1 回答
  • 0 关注
  • 1359 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信