简体   繁体   English

在Sparc上的Solaris上对atomic_cas_64()的内部实现?

[英]Internal implementation of atomic_cas_64() on Solaris on Sparc?

On 64-bit Solaris on Sparc, is the atomic_cas_64() function call implemented using load-link/condition-store? 在Sparc的64位Solaris上,是否使用load-link / condition-store实现了atomic_cas_64()函数调用?

If not, what if any API does Solaris offer for user-mode C code to utilize ll/sc? 如果没有,那么Solaris为用户模式C代码提供使用ll / sc的任何API怎么办?

Sparc64 - alone amongst modern CPUs - implements neither double wide CAS nor LL/SC. Sparc64(仅在现代CPU中)既不实现双倍宽度的CAS,也不实现LL / SC。 As such, implementing lock-free code is problematic. 这样,实现无锁代码是有问题的。 There a solutions, but they are solutions to a problem (ABA) which does not exist on other platforms because of their support for CAS or LL/SC. 有解决方案,但是它们是针对问题(ABA)的解决方案,由于支持CAS或LL / SC而在其他平台上不存在。 Furthermore, a range of lock-free algorithms cannot be implemented on Sparce because of this limitation. 此外,由于此限制,无法在Sparce上实现一系列无锁算法。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM