首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >内存围栏是否涉及内核?

内存围栏是否涉及内核?
EN

Stack Overflow用户
提问于 2020-02-12 08:35:53
回答 1查看 562关注 0票数 4

在询问这个问题之后,我了解到原子指令(如test-and-set )将不涉及内核。只有当进程需要休眠(等待获得锁)或唤醒(因为它不能获得锁,但现在可以)时,内核才需要执行调度操作。

如果是这样的话,是否意味着内存围栏(如std::atomic_thread_fence in c++11 )也不会涉及内核?

EN

回答 1

Stack Overflow用户

发布于 2020-02-12 09:22:47

在这个问题和引用的问题中,您都是混合的:

  • 在汇编程序范围内的同步原语,如cmpxchg和fences
  • 进程/线程同步,如未来者

“它涉及内核”是什么意思?我猜您的意思是“(P)线程同步”:线程处于休眠状态,当另一个进程/线程满足给定条件时,线程就会被唤醒。

然而,测试和设置原语,如cmpxchg和内存栅栏,是由微处理器汇编程序提供的功能。内核同步原语最终是基于它们来提供系统和进程同步,使用隐藏在内核调用后的内核空间中的共享状态。

您可以查看futex源以获得证据。

但是不,内存围栏不涉及内核:它们被转换成简单汇编程序操作。和cmpxchg一样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60184160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档