Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在 Sparc 上的 64 位 Solaris 上,atomic_cas_64() 函数调用是否使用加载链接/条件存储实现?
如果没有,如果 Solaris 为用户模式 C 代码提供任何 API 以利用 ll/sc 怎么办?
Sparc64 - 仅在现代 CPU 中 - 既不实现双宽 CAS 也不实现 LL/SC。因此,实现无锁代码是有问题的。有一个解决方案,但它们是解决问题(ABA)的方法,因为它们支持 CAS 或 LL/SC,所以在其他平台上不存在该问题。此外,由于这个限制,一系列无锁算法无法在 Sparce 上实现。
您可以查看SPARC和SPARCv9实现以确切了解它们的作用......您应该查看 membar_* 函数(在同一文件中),看看您可以做些什么来获得更强的保证。