假设我有一个原子加载-修改-存储操作:
1: ldaxr x8, [x9]
orr x10, x8, #1
stlxr w11, x10, [x9]
cbnz w11, 1b
如果我理解正确,当这段代码在两个内核上执行(访问相同的内存地址)时,线程 A 会使用ldaxr
. stlxr
在线程 B 中失败并重试操作,直到线程 A 释放锁。
ldaxr
但是如果在主线程和中断处理程序尝试访问相同的内存地址之后发生中断会发生什么?它会死锁还是中断处理程序优先,并且stlxr
在从中断返回时主线程会失败?