猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
布尔类型的赋值操作是否是原子操作
布尔类型的赋值操作是否是原子操作
如果不是
为何原子操作类Interlocked中没有关于布尔类型的操作
FFIVE
浏览 1360
回答 1
1回答
慕姐4208626
当然是原子操作,同时包括所有对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())
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
数据结构
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续