社区
C语言
帖子详情
请教:spinlock,mutex,semaphore,critical section的作用和区别,都适合那些场合,谢谢
zxycbz
2008-03-12 08:04:31
请教:spinlock,mutex,semaphore,critical section的作用和区别,都适合那些场合,谢谢
给些资料也可以,谢谢!
...全文
3748
5
打赏
收藏
请教:spinlock,mutex,semaphore,critical section的作用和区别,都适合那些场合,谢谢
请教:spinlock,mutex,semaphore,critical section的作用和区别,都适合那些场合,谢谢 给些资料也可以,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
就呆在云上
2008-12-12
打赏
举报
回复
Mutex是一把钥匙,一个人拿了就可进入一个房间,出来的时候把钥匙交给队列的第一个。一般的用法是用于串行化对critical section代码的访问,保证这段代码不会被并行的运行。
Semaphore是一件可以容纳N人的房间,如果人不满就可以进去,如果人满了,就要等待有人出来。对于N=1的情况,称为binary semaphore。一般的用法是,用于限制对于某一资源的同时访问。
Binary semaphore与Mutex的差异:
在有的系统中Binary semaphore与Mutex是没有差异的。在有的系统上,主要的差异是mutex一定要由获得锁的进程来释放。而semaphore可以由其它进程释放(这时的semaphore实际就是个原子的变量,大家可以加或减),因此semaphore可以用于进程间同步。Semaphore的同步功能是所有系统都支持的,而Mutex能否由其他进程释放则未定,因此建议mutex只用于保护critical section。而semaphore则用于保护某变量,或者同步。
另一个概念是spin lock,这是一个内核态概念。spin lock与semaphore的主要区别是spin lock是busy waiting,而semaphore是sleep。对于可以sleep的进程来说,busy waiting当然没有意义。对于单CPU的系统,busy waiting当然更没意义(没有CPU可以释放锁)。因此,只有多CPU的内核态非进程空间,才会用到spin lock。Linux kernel的spin lock在非SMP的情况下,只是关irq,没有别的操作,用于确保该段程序的运行不会被打断。其实也就是类似mutex的作用,串行化对critical section的访问。但是mutex不能保护中断的打断,也不能在中断处理程序中被调用。而spin lock也一般没有必要用于可以sleep的进程空间。
zhangjundriver
2008-12-12
打赏
举报
回复
有一次去深信服的校园招聘考过这个题啊,汗颜啊,我不会。
program2050
2008-12-12
打赏
举报
回复
等高人来
野男孩
2008-03-12
打赏
举报
回复
除了最后一个Critical Section,其他都能用于进程间同步,临界段只能用于进程内部,是轻量级同步对象。
spinlock是自旋锁,用于多cpu的情况
mutex就是普通的跨进程同步对象
semaphore用于对资源数的控制
建议看ls说的那本书
独孤过儿
2008-03-12
打赏
举报
回复
《Win32 多线程程序设计》
optee系统开发精讲
#### 课程简介和大纲 该课程包含但不限与以下章节: optee的组件介绍 optee os启动流程 optee os的初始化流程 optee os线程向量表及其
作用
进入optee os的八种方式 optee os的异常向量表和设计模型 optee os对irq...
spi
n
lock
,
mutex
,
semaphore
,
criti
ca
l s
ect
ion
的
作用
与
区别
spi
n
lock
是自旋锁,用于多cpu的情况
mutex
就是普通的跨进程同步对象
semaphore
用于对资源数的控制 ------------------------------------------------------------------------------------------- ...
spi
n
lock
,
mutex
,
semaphore
,
criti
ca
l s
ect
ion
的
作用
与差别
1.
spi
n
lock
:自旋锁。是专为防止多处理器并发而引入的一种锁。 2.
mutex
:相互排斥量。仅仅有拥有相互排斥对象的线程才有訪问公共资源的权限。保证了资源不会同一时候被多个线程訪问。 3.
semaphore
:信号量。同意多...
spi
n
lock
mutex
semaphore
rw
lock
<br />
spi
n
lock
mutex
语义上是一样的,都是对一临界区加锁保护,
区别
是
mutex
得不到锁会睡眠,因此不能在中断上下文中使用。 另外,解锁的一定是上锁的那个
semaphore
得不到锁会睡眠,也不能用在...
spi
n
lock
,
mutex
,
semaphore
,viti
ca
l s
ect
ion
的
作用
与
区别
?
Semaphore
的同步功能是所有系统都支持的,而
Mutex
能否由其他进程释放则未定,因此建议
mutex
只用于保护
criti
ca
l s
ect
ion
。而
semaphore
则用于保护某变量,或者同步。 另一个概念是
spi
n
lock
,这是一个内核态概念。...
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章