原子操作

有一种方法论说进行原子操作的时候资源不需要被保护。原子操作就是种因为太小而无法被 电脑中央处理器分开的操作。由于它的小尺寸,它不会有 convention 问题,因为它会被单独 执行而不会在执行中被任务切换。特别地,原子操作就是编译到单个汇编指令的几行源代码。
典型地,像那些对一个整型或者布尔型域的读写任务被认为是原子操作,由于它们被编译为 单个移动指令(move instruction.)。但是我建议你不要依赖于原子操作,因为在一些情况下, 甚至写一个整型或布尔型都可以牵扯不止单个操作,这取决于数据一开始是从哪里读来的。 还有,这依赖于内部编译器知识,这些知识可能在你不知晓的情况下改变。依赖于在源代码 等级的原子操作会产生那些有未来不确定性,和可能在不同处理器和不同操作系统表现很不 同的代码。
有许多人为激烈地为原子操作辩护。然而有个显著的即将出现的事情支持了我的观点,那就 是 .net。当你的源代码先被编译为 IL(一种中间语言),然后再在不同的平台上分别编译为机 器语言,老实说,你确定你的那行源代码最终还会是个原子操作吗?
这是你的选择,并且支持和反对原子操作的人都有很多。依赖原子操作大部分情况下只节省 了几微妙和几字节的代码。我强烈地反对原子操作,因为他们就这么点好处却有巨大的代价。 不要把任何操作当做原子操作来用。

原文地址:https://www.cnblogs.com/hnxxcxg/p/5567542.html