原文英文,约200词,阅读约需1分钟。
📝
内容提要
Guile 3.0.9的aarch64原子处理存在问题,作者尝试了两种解决方案,其中一种奇怪的解决方案竟然有效。问题与C语言的atomic_exchange等价物有关。第一个补丁需要ARM v8.1设备,第二个补丁只改变了cbnz的目标,问题消失了。作者感到困惑。
🎯
关键要点
-
Guile 3.0.9的aarch64原子处理存在问题。
-
作者发现了两种解决方案,但其中一种解决方案很奇怪。
-
问题与C语言的atomic_exchange等价物有关。
-
生成的代码在某些情况下会丢失写入。
-
第一个补丁需要ARM v8.1设备。
-
第二个补丁仅改变了cbnz的目标,问题消失了。
-
作者对此感到困惑。
❓
延伸问答
Guile 3.0.9的aarch64原子处理存在哪些问题?
Guile 3.0.9的aarch64原子处理存在偶尔丢失写入的问题。
作者提出了哪些解决方案?
作者提出了两种解决方案,其中一种是用swpal替换原有代码,另一种是改变cbnz的目标。
第一个补丁需要什么设备?
第一个补丁需要ARM v8.1设备。
第二个补丁是如何解决问题的?
第二个补丁通过改变cbnz的目标,生成的新代码使问题消失。
作者对解决方案的反应是什么?
作者对此感到困惑,因为第二个补丁的效果出乎意料。
问题与C语言的哪个功能有关?
问题与C语言的atomic_exchange等价物有关。
🏷️