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

如果没有,Solaris 是否为用户模式 ​​C 代码提供任何 API 来利用 ll/sc 呢?

有帮助吗?

解决方案

的SPARC64 - 单独之中现代CPU - 工具既不双宽CAS也不LL / SC。因此,实施无锁码是有问题的。有一个解决方案,但它们对不上,因为他们对CAS或LL / SC支持其他平台存在的问题(ABA)的解决方案。另外,一个区间的无锁算法不能在Sparce实现,因为这限制。

其他提示

你可以看看 斯帕克SPARCv9 实施来看看他们到底做了什么......您应该查看 membar_* 函数(在同一文件中),看看可以采取哪些措施来获得更强的保证。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top