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

发布于 2024-08-01 19:38:10 字数 129 浏览 3 评论 0原文

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

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

On 64-bit Solaris on Sparc, is the atomic_cas_64() function call implemented using load-link/condition-store?

If not, what if any API does Solaris offer for user-mode C code to utilize ll/sc?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

记忆で 2024-08-08 19:38:10

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

Sparc64 - alone amongst modern CPUs - implements neither double wide CAS nor 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. Furthermore, a range of lock-free algorithms cannot be implemented on Sparce because of this limitation.

z祗昰~ 2024-08-08 19:38:10

您可以查看 SPARCSPARCv9 实现来准确了解它们的作用...您应该查看 membar_* 函数(在同一文件中)以了解您可以做什么要有更有力的保障。

You could have a look at the SPARC and SPARCv9 implementations to see exactly what they do... you should have a look at the membar_* functions (in the same files) to see what you can do to have stronger guarantees.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文