腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(9999+)
视频
沙龙
1
回答
SMP
linux
中的
互斥
锁
所有者
、
、
、
、
在
互斥
锁
的
内核
实现
中,线程所有者字段仅当它是SMP构建时才存在。我可以理解,在良好和干净的代码下,只有在获取成功时,线程才会调用release,所以我们可以通过不跟踪线程来节省一些缓存和cpu周期。是因为在SMP中,
互斥
是混合的并且旋转,而线程拥有者在另一个cpu上并且需要这个字段作为引用,还是它背后有更多的原因?
浏览 4
提问于2012-09-25
得票数 0
回答已采纳
2
回答
glibc/NPTL/
Linux
健壮
互斥
中的竞争条件?
、
、
在2010年关于问题的评论中,jilles声称: glibc强大的
互斥
量之所以如此之快,是因为glibc采用了危险的捷径。当
内核
将
互斥
锁
标记为“将导致EOWNERDEAD”时,不能保证
互斥
锁
仍然存在。如果
互斥
锁
被销毁,内存被替换为内存映射文件,该文件恰好在正确的位置包含最后一个拥有线程的ID,并且最后一个拥有线程在写入
锁
字之后(但在从拥有
互斥
锁
的列表中完全删除
互斥
锁</e
浏览 8
提问于2012-08-14
得票数 16
回答已采纳
1
回答
Linux
内核
:立即去调度的成本
、
、
在中,我了解了一种新型的
linux
互斥
体,即adaptive_np
互斥
: 其中提到“立即脱产的费用”。这要多少钱?(就cpu刻度而言;TLB、TSS、smth重载)
内核
浏览 4
提问于2010-02-15
得票数 4
2
回答
互斥
访问和系统调用
、
、
、
、
我知道,在
Linux
中,
互斥
被
实现
为下面的futexes,futex使用比较和交换机制。通常,为了获取
锁
,用户空间线程不需要进行系统调用,因为
锁
是在用户空间中解析的。现在,我的问题是,当存在很高的争用和许多线程试图同时锁定
互斥
时,会发生什么。那么,是否发生了系统调用,以便
内核
决定授予
互斥
对象哪个线程?尤其是当线程优先级不同的时候?我自己也这么认为。
浏览 3
提问于2011-08-15
得票数 11
回答已采纳
2
回答
如何在
内核
中的
互斥
锁
解锁期间检查所有权?
、
、
我试图理解
Linux
内核
中
互斥
实现
的内部机制。在我看来,
互斥
实现
最基本的问题之一是 只有获得
锁
的线程才能释放
互斥
锁上的
锁
。然而,即使在通过
互斥
实现
()之后,我也无法理解如何在mutex_unlock期间检查所有权?
浏览 1
提问于2015-08-18
得票数 1
3
回答
CreateMutex()在内部是如何工作的?
、
基本上,它用于使应用程序实例成为单例。
浏览 0
提问于2010-01-20
得票数 0
1
回答
信号量与条件变量.抽象级别
、
、
、
这使我认为信号量是一个比
互斥
变量和条件变量更高层次的抽象。 但是,在我学习了操作系统类之后,我现在知道在
内核
中,信号量通常是最低的抽象级别。信号量是通过禁用中断来
实现
的,
锁
本质上是值为1的信号量,而条件变量则是在不使用信号量或
锁
的情况下从底层
实现
的。因此,与
锁
或条件变量相比,信号量(在
内核
级)似乎并不是一个更高级别的抽象。或者是用户级和
内核
级同步之间的差异造成的?
浏览 6
提问于2016-12-19
得票数 0
回答已采纳
3
回答
检查是否在核心转储中持有自旋
锁
。
、
、
我试图分析
Linux
内核
内核
转储中的自旋
锁
变量。在
互斥
锁
的情况下,如果
互斥
锁住了,计数变量的值应该是0。如果是自旋
锁
,spinlock_t my_lock的字段如下 (arch_spinlock_t) raw_lock如果
锁
被拿走了,会不会有不同的值?是否有其他方法检查自旋
锁
变量的转储,以确定它是否已被接受?价值体系结构是依赖的吗?
浏览 3
提问于2015-01-02
得票数 4
回答已采纳
1
回答
在共享库中使用哪种类型的
锁
机制,即由posix线程访问
、
、
我有一个使用POSIX线程的应用程序,即使用一个静态库,它有一些全局变量,而我在libray中没有任何线程
实现
。有人告诉我,如果你在那个文件中使用pthread,那么你应该使用pthread_mutex,否则就是简单的
互斥
。 因为库是无线程的,所以在库中使用哪个
锁
(特别是
互斥
)来保护全局变量。我尝试过
linux
/kernel/mutex.h,显然不适合在用户空间使用
内核
的对象,编译器也有警告。那么我从哪里得到这个简单的
互斥
锁
呢!
浏览 1
提问于2013-06-24
得票数 0
1
回答
如何在
linux
内核
中添加自定义信号量?
基本上,我希望在
linux
内核
中
实现
自己的信号量,并能够在用户程序中使用它。 我在
实现
内核
代码方面取得了一些进展,但是我不知道如何使信号量类型和我编写的函数对用户程序可用。有没有办法让使用用我的代码编译的
内核
的
linux
能够简单地通过包含一个头文件来使用我的信号量?当涉及到
linux
内核
时,我不是专业人士,所以如果我犯了任何明显的错误,请随时指出它们out.Thanks。我使用的
内核
版本是2.6.32。
浏览 3
提问于2014-12-03
得票数 2
5
回答
为什么pthread
互斥
被认为比futex“慢”?
、
、
、
为什么POSIX
互斥
锁
被认为比futexes更重或更慢?pthread
互斥
类型的开销来自哪里?我听说pthread
互斥
是基于futexes的,当没有竞争时,不要对
内核
进行任何调用。看来pthread
互斥
锁
仅仅是futex的“包装器”。 开销是否仅仅体现在函数包装器调用和
互斥
函数“设置”futex上(即,基本上设置pthread
互斥
函数调用的堆栈)?或者是否有一些额外的内存障碍步骤发生在pthread
互斥
中?
浏览 0
提问于2011-06-16
得票数 49
回答已采纳
1
回答
互斥
锁
是否使等待线程在POSIX API中休眠?
、
、
、
、
我们可以在POSIX API中使用
互斥
锁
,如下所示:pthread_mutex_lock(&mutex); /* critical section
浏览 1
提问于2020-02-02
得票数 1
回答已采纳
6
回答
互斥
是如何
实现
的?
、
、
对于特定的应用程序,某些
实现
是否比其他
实现
更好?有没有什么可以通过推出自己的产品来赚到的呢?
浏览 4
提问于2009-09-28
得票数 70
回答已采纳
3
回答
Linux
内核
互斥
锁
、
、
、
我正在读"
Linux
设备驱动程序第三版“,关于并发和竞争条件的章节。有一个我不完全理解的例子;他们谈论的是
内核
编程中的一个常见模式,当一个人需要在当前线程之外启动活动(例如,新的
内核
线程或用户进程、请求现有进程或基于硬件的操作)时,等待该活动完成。我不明白为什么我们不能这样做:down(&sem);为什么需要在锁定状态下创建
互斥
锁
,然后在任务启动后获取
互斥
<em
浏览 6
提问于2011-01-21
得票数 6
1
回答
为什么POSIX将信号量标准化为系统调用,而将
互斥
和条件变量留给P线程(用户级别)
、
、
、
、
为什么POSIX将对信号量的支持标准化为syscall,而将条件变量和
互斥
对象留给线程库呢?我也不知道。猜测性能是不将
互斥
实现
为syscall的考虑因素。(原子硬件指令是无特权的,因此在用户级别
实现
它们是可能的。尽管
Linux
提供了futex,但它实际上正试图将自旋
锁
优化为两阶段
锁
,以
实现
睡眠
锁</e
浏览 4
提问于2020-03-03
得票数 1
回答已采纳
1
回答
原子enque和dque操作
、
、
我的一个项目要求在
内核
模块中使用原子入队和出队操作。请让我知道有什么API可以做到这一点。 致敬,普拉迪普
浏览 1
提问于2015-01-15
得票数 0
4
回答
非抢占式
linux
内核
上的spin_lock
、
、
、
我在一篇文章中读到,在具有1CPU和非抢占式
linux
内核
(2.6.x)的系统上,spin_lock调用等同于空调用,因此以这种方式
实现
。 我不能理解:它不应该等同于
互斥
锁上的睡眠吗?例如,即使在非抢占式
内核
上,中断处理程序仍然可能会执行,或者我可能会调用一个函数来使原始线程进入睡眠状态。因此,如果一个空的spin_lock调用被
实现
为
互斥
锁
,那么它就不是“安全的”。
浏览 0
提问于2010-07-30
得票数 4
回答已采纳
2
回答
为什么pthread_mutex在Mac上的性能比
Linux
差?
、
、
、
、
我现在正在学习多线程编程,我注意到在Mac上使用
互斥
锁
实现
同步的程序非常慢,在某种程度上,使用单线程通常更好。我知道有更快的同步方法,但我仍然想知道为什么会这样。此外,当使用其他
锁
时,例如旋转
锁
,差异永远不会这么大。补充:我遗漏了一些东西。我还分别比较了每个操作系统上的自旋
锁
和
互斥
。在
Linux
上,自旋
锁
比有大量线程的
互斥
锁
慢得多,而
浏览 2
提问于2015-11-30
得票数 1
1
回答
在
内核
开发中,有类似于
互斥
对象的down_interruptible()函数吗?
、
、
、
、
在“
Linux
设备驱动程序第三版”一书中,
互斥
通过init_MUTEX(sem)通过信号量
实现
。然而,较新的
内核
,如
内核
3.2.X,已经删除了这个函数,并添加了
互斥
对象的支持。但当我遇到密码时: return -ERESTARTSYS; 我不能确定这个
互斥
方法是否有对应的。换句话说,我如何才能中断对特定
互斥
对象的等待?
浏览 5
提问于2015-01-15
得票数 1
回答已采纳
4
回答
POSIX线程: pthreads_cond_wait()和其他函数是系统调用的吗?
、
、
POSIX标准基于
互斥
锁
和条件变量等概念定义了几个用于线程同步的例程。我知道它们是通过"pthread.h“包含的,但它们最终会导致系统调用,从而在操作系统
内核
中
实现
吗?
浏览 1
提问于2009-10-17
得票数 4
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
Linux驱动必学知识点-内核互斥锁
【精通内核】Linux内核rcu(顺序)锁实现原理与源码解析
linux 内核 --- 自旋锁(spinlock_t)
详解Linux多线程中的互斥锁、读写锁、自旋锁、条件变量、信号量
Go语言互斥锁
热门
标签
更多标签
云服务器
ICP备案
对象存储
实时音视频
即时通信 IM
活动推荐
运营活动
广告
关闭
领券