ldrex / strex和swp之间的区别 什么是差异
他们有相同的功能
比其他人好吗? 按照手臂v7 rm
ARM强烈建议所有软件使用本节中描述的同步原语,而不是SWP或SWPB。
答案 0 :(得分:3)
SWP
完全正如其名称所暗示的那样 - 用原子上的内存中的单词交换寄存器的内容,而不是其他内容。它自v6以来已被弃用,可能在某些v7实现中不存在,并且在v8中完全从架构中删除(类似SWPB
,单字节版本)。
Load/store exclusives是基元,你可以构建几乎任何atomic read-modify-write operation。排他性的另一个关键点是它们是非阻塞的,因此更适合多处理器环境 - 如果CPU1在CPU0的原子操作中写入相同的地址,CPU0将看到STREX
失败并简单地重试,而CPU1则不是明智之举。将其与总线锁定原子进行比较,其中CPU1将被阻止访问任何内存,直到CPU0完成。