我正在寻找一个函数,它为Intel x86 上的原子 CAS提供高级D接口。
我知道我可以使用内联 ASM 来做到这一点(如果需要,我会这样做),但如果可以的话,我宁愿从其他人那里获取代码。
来自以下文档:http ://www.digitalmars.com/d/2.0/overview.html
内联汇编器
设备驱动程序、高性能系统应用程序、嵌入式系统和专用代码有时需要使用汇编语言来完成工作。虽然 D 实现不需要实现内联汇编器,但它是定义的并且是语言的一部分。大多数汇编代码需求都可以用它来处理,无需单独的汇编程序或 DLL。
许多 D 实现还将支持内部函数,类似于 C 对 I/O 端口操作、直接访问特殊浮点操作等的内部函数的支持。
所以理论上你可以直接使用 CMPXCHG。
编辑
你可能想看看:http ://www.dsource.org/projects/tango/browser/trunk/tango/core/Atomic.d?rev=4277
由于某种原因,加载确实需要一段时间,但它在内部使用 CMPXCHG 指令,为您的目的重新调整它应该是微不足道的。