比较和交换vs测试和设置

时间:2010-09-07 14:03:39

标签: c++ atomicity thread-synchronization

有人可以向我解释多线程中上述操作的工作和差异吗?

2 个答案:

答案 0 :(得分:38)

test-and-set修改内存位置的内容,并将其旧值作为单个原子操作返回。

compare-and-swap以原子方式将内存位置的内容与给定值进行比较,仅当它们相同时,将该内存位置的内容修改为给定的新值。 / p>

以粗体标记的差异。

答案 1 :(得分:7)

测试和设置操作位,比较和交换操作32位字段。

z / TPF系统倾向于使用测试和设置(TS)指令,因为锁定指示符通常是用于控制对系统代码关键区域的访问的位。 测试和设置(TS)指令比比较和交换(CS)指令需要更少的寄存器,并且需要更少的执行时间,因为只需要设置一个字节。

并且,我发现了以下材料:http://www.ibm.com/support/knowledgecenter/SSB23S_1.1.0.13/gtpc3/tasinst.html

您可以通过名为"现代操作系统,第2章" ...

的书来了解更多有关TSL的信息。