大佬教程收集整理的这篇文章主要介绍了c – Windows VisualC上的易读性和写入原子?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
现在,C()标准符合答案显然是没有的.@H_301_3@
但是,在Windows& Visual C编译器,情况似乎不是那么清楚.@H_301_3@
我最近answered引用了official MSDN docs的volatile@H_301_3@
现在看这个,在我看来,一个volatile变量将被MS编译器处理,因为Std :: atomic将在即将到来的C11标准中.@H_301_3@
然而,在comment to my answer,用户Hans Passant写道:“MSDN文章是非常不幸的,它是错误的,你不能实现一个挥发性的锁,甚至没有微软的版本(…)”@H_301_3@
请注意:MSDN中给出的示例似乎很有腥味,因为您通常不会实现无原子交换的锁定. (也是@L_772_18@.)这仍然是问题wrt.对MSDN文章中给出的其他信息的有效性,特别是对于here和here的用例.)@H_301_3@
另外,有Interlocked *函数的文档,特别是InterlockedExchange
,它具有一个volatile(!?)变量,并进行原子读写. (请注意,我们对SO-When should InterlockedExchange be used?有一个问题 – 不会授权回答此功能是否需要只读或只写原子访问.)@H_301_3@
更重要的是,上面引用的易失性文档以“全球或静态对象”的形式引用,我认为“真实”@L_404_13@应该适用于所有价值观.@H_301_3@
回到问题@H_301_3@
在Windows上,使用Visual C(2005 – 2010年),将声明一个(32位?int?)变量作为volatile允许原子读取和写入此变量?@H_301_3@
对我来说特别重要的是,这应该保持(或不)在Windows / VC上独立于程序运行的处理器或平台. (就是说,它是WinXP / 32bit还是Windows 2008R2 / 64bit运行在Itanum2上?)@H_301_3@
以上是大佬教程为你收集整理的c – Windows VisualC上的易读性和写入原子?全部内容,希望文章能够帮你解决c – Windows VisualC上的易读性和写入原子?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。