1

在 Sparc 上的 64 位 Solaris 上,atomic_cas_64() 函数调用是否使用加载链接/条件存储实现?

如果没有,如果 Solaris 为用户模式 ​​C 代码提供任何 API 以利用 ll/sc 怎么办?

4

2 回答 2

1

Sparc64 - 仅在现代 CPU 中 - 既不实现双宽 CAS 也不实现 LL/SC。因此,实现无锁代码是有问题的。有一个解决方案,但它们是解决问题(ABA)的方法,因为它们支持 CAS 或 LL/SC,所以在其他平台上不存在该问题。此外,由于这个限制,一系列无锁算法无法在 Sparce 上实现。

于 2009-08-15T18:15:23.240 回答
0

您可以查看SPARCSPARCv9实现以确切了解它们的作用......您应该查看 membar_* 函数(在同一文件中),看看您可以做些什么来获得更强的保证。

于 2009-08-12T08:06:16.343 回答