- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我写了一些无锁代码,可以在本地正常工作
读取,在大多数情况下。
本地旋转内存读取是否一定意味着我
必须始终在旋转之前插入内存屏障
读?
(为了验证这一点,我设法制作了一个阅读器/作者
导致读者永远看不到的组合
书面值(value),在某些非常具体的情况下
条件——专用 CPU,附加到 CPU 的进程,
优化器一直向上,没有其他工作完成
循环——所以箭头确实指向那个方向,但我不是
完全确定通过内存旋转的成本
屏障。)
如果旋转通过内存屏障的成本是多少
缓存的存储缓冲区中没有要刷新的内容?
即,所有过程正在做(在C中)是
while ( 1 ) {
__sync_synchronize();
v = value;
if ( v != 0 ) {
... something ...
}
}
lock orl
Volume 3A: System Programming Guide, Part 1 -- 8.1.2
Bus Locking
Intel 64 and IA-32 processors provide a LOCK# signal that
is asserted automatically during certain critical memory
operations to lock the system bus or equivalent link.
While this output signal is asserted, requests from other
processors or bus agents for control of the bus are
blocked.
[...]
For the P6 and more recent processor families, if the
memory area being accessed is cached internally in the
processor, the LOCK# signal is generally not asserted;
instead, locking is only applied to the processor’s caches
(see Section 8.1.4, “Effects of a LOCK Operation on
Internal Processor Caches”).
最佳答案
“xchg reg,[mem]”指令将通过内核的 LOCK 引脚指示其锁定意图。该信号穿过其他内核并缓存到总线主控总线(PCI变体等),总线主控总线将完成它们正在做的事情,最终LOCKA(确认)引脚将向CPU发出xchg可能完成的信号。然后 LOCK 信号关闭。此序列可能需要很长时间(数百个 CPU 周期或更多)才能完成。之后,其他内核的相应缓存行将失效,您将拥有一个已知状态,即已在内核之间同步的状态。
xchg 指令是实现原子锁所必需的。如果锁本身是成功的,您就可以访问您已定义锁以控制访问的资源。这样的资源可以是内存区域、文件、设备、功能或您拥有的任何东西。尽管如此,程序员始终可以编写代码在该资源被锁定时使用它,而在它没有被锁定时不使用它。通常,成功锁定后的代码序列应尽可能短,以便尽可能少地阻碍其他代码获取对资源的访问。
请记住,如果锁定不成功,您需要通过发出新的 xchg 重试。
“无锁”是一个吸引人的概念,但它需要消除共享资源。如果您的应用程序有两个或多个内核同时读取和写入公共(public)内存地址,则“无锁”不是一种选择。
关于lock-free - 自旋锁总是需要内存屏障吗?在内存屏障上旋转是否昂贵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6810733/
我试图让我的 SCNNode 自动水平旋转。这是我到目前为止的代码: box.scale = SCNVector3(x: 0.26, y: 0.26, z: 0.26) box.position =
我试图让我的 SCNNode 自动水平旋转。这是我到目前为止的代码: box.scale = SCNVector3(x: 0.26, y: 0.26, z: 0.26) box.position =
我试图让 unicode 三 Angular 形 (▵) 在页面加载时和用户将鼠标悬停在跨度上时旋转 360 度。我已经设置了一个 jsFiddle解释我想要什么。 ULTR▵ 我对 CS
我是一名优秀的程序员,十分优秀!