Synchronization 硬件能否获取&;添加指令保证无等待执行?

Synchronization 硬件能否获取&;添加指令保证无等待执行?,synchronization,wait-free,Synchronization,Wait Free,那么,如果多个进程执行FAA,是否可以保证该FAA指令将以无等待的方式执行?如果完成执行该指令的进程没有停止,而是反复尝试执行该指令,该怎么办?如果算法不包含重试循环或等待循环,则该算法是无等待的。由于fetch\u add()从不失败(与compare\u exchange\u弱()不同),因此操作本身适合编写无等待算法(因为不需要重试循环)。当然,使用fetch\u add()指令的算法实际上是否无等待取决于算法的其余部分。只要硬件上的指令支持fetch\u add(),它就不需要等待。只有

那么,如果多个进程执行FAA,是否可以保证该FAA指令将以无等待的方式执行?如果完成执行该指令的进程没有停止,而是反复尝试执行该指令,该怎么办?

如果算法不包含重试循环或等待循环,则该算法是无等待的。由于
fetch\u add()
从不失败(与
compare\u exchange\u弱()
不同),因此操作本身适合编写无等待算法(因为不需要重试循环)。当然,使用
fetch\u add()
指令的算法实际上是否无等待取决于算法的其余部分。只要硬件上的指令支持
fetch\u add()
,它就不需要等待。只有当它不受支持并且必须通过CAS循环或LL/CS进行模拟时,它才不再是无等待的,因为它们不是无等待的