有人能解释一下多线程中上述操作的工作原理和区别吗?
test-and-set
操作可以在单个原子操作中修改内存位置的内容并返回其旧值。
compare-and-swap
操作会比较内存位置的内容与给定值,仅当它们相同时,才会修改该内存位置的内容为给定的新值。
加粗部分是两者之间的区别。
测试与设置是在位上操作,比较与交换是在32位字段上进行操作。
z/TPF系统倾向于使用测试和设置(TS)指令,因为通常情况下,锁定指示器是设置为控制对系统代码关键区域访问的位。 测试和设置(TS)指令需要比比较和交换(CS)指令更少的寄存器,并且执行时间更短,因为只需要设置一个单字节。
我从这里找到了这些材料。
您可以通过阅读《现代操作系统》的第2章来了解有关TSL的更多内容...