返回

多线程-ldrex和strex原子性不确定性

发布时间:2022-04-11 15:34:47 393

我最近在处理armv7组件时遇到了一个问题。如果我们允许抢占或中断,ldrex和strex能保证原子性吗?我们知道ldrex可以将本地监视器(为了简单起见,我们可以忽略全局监视器)从开放访问状态转移到独占访问状态,并且只有当本地监视器处于独占访问状态时,strex才会成功,否则,它就会失败。现在,让我们想象一下,在同一个PE上有三个线程。

它们的指令顺序如下:在这里输入图像描述,因为这三个在同一个PE上,所以肯定不需要考虑全局监视器。问题是,线程1的strex会成功吗?因为虽然线程2执行ldrex和strex,但本地监视器将变为开放访问状态,线程3在此之后执行其ldrex,此操作应该能够将本地监视器转移回独占访问状态,这将帮助线程1成功执行strex。

但如果是这样,ldrex和strex还能保持他们最初的假设吗?即strex不会将脏数据存储到受保护的内存位置?如果有朋友知道答案,请帮忙,我还没有找到可信的解释。。。谢谢!

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像