比较和交换vs测试和设置

Ton*_*ion 22 c++ atomicity thread-synchronization

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

Kir*_*sky 42

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

compare-and-swap原子地将内存位置的内容与给定值进行比较,并且只有它们相同时,才将该内存位置的内容修改为给定的新值.

差异用粗体标出.


小智 8

测试和设置操作一位,比较和交换操作在32位字段上.

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

我发现这些材料来自:http://www.ibm.com/support/knowledgecenter/SSB23S_1.1.0.13/gtpc3/tasinst.html

您可以通过名为"现代操作系统,第2章"的书籍了解更多有关TSL的信息......