首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

为啥SpinLock的实现中应该加上PAUSE指令

2013-04-05 
为什么SpinLock的实现中应该加上PAUSE指令?当spinlock执行lock()获得锁失败后会进行busy loop(参考这段代

为什么SpinLock的实现中应该加上PAUSE指令?

当spinlock执行lock()获得锁失败后会进行busy loop(参考这段代码),不断检测锁状态,尝试获得锁。这么做有一个缺陷:频繁的检测会让流水线上充满了读操作。另外一个线程往流水线上丢入一个锁变量写操作的时候,必须对流水线进行重排,因为CPU必须保证所有读操作读到正确的值。流水线重排十分耗时,影响lock()的性能。

恩,支持。现在性能还不在这里。我们保持关注,先从收益大的地方入手。

热点排行