社区
C语言
帖子详情
请教:spinlock,mutex,semaphore,critical section的作用和区别,都适合那些场合,谢谢
zxycbz
2008-03-12 08:04:31
请教:spinlock,mutex,semaphore,critical section的作用和区别,都适合那些场合,谢谢
给些资料也可以,谢谢!
...全文
3798
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 多线程程序设计》
Criti
ca
l S
ect
ion
在操作系统领域,"临界区"(
Criti
ca
l S
ect
ion
)是一个至关重要的概念,它涉及到多线程编程和并发控制。临界区是指程序中的某段代码,这段代码需要独占访问共享资源,以防止多个线程同时执行导致数据不一致或错误。在...
深信服09年校招聘笔试开发类试题
- 前面已解释过
spi
n
lock
、
mutex
、
semaphore
和
criti
ca
l s
ect
ion
。 10. 其他知识点: - 变量存储位置:变量可存储在栈、堆、数据段、代码段等。 - 结构体大小:结构体的大小受对齐规则影响,不同平台的对齐规则...
超级简单的程序锁.........
在操作系统层面,程序锁可以是内建的机制,如信号量(
Semaphore
)、互斥量(
Mutex
)或临界区(
Criti
ca
l S
ect
ion
)。在编程语言层面,例如在C++中,我们可以使用`std::
mutex
`,在Java中则有`synchronized`关键字来...
深信服科技公司校园招聘笔试题
**解析:** 回文字符串是指正序和倒序读都一样的字符串。可以通过比较字符串首尾字符的方式,逐步向中间移动来判断。 **示例代码:** ```c++ #include #include using namespace std; bool isPalindrome(const ...
深信服部分笔试题(2008.10.14)
题目中的`
spi
n
lock
`、`
mutex
`、`
semaphore
`和`
criti
ca
l s
ect
ion
`都是并发编程中常见的同步原语: - **
Spi
n
lock
**:一种简单的锁定机制,适用于轻量级同步需求。 - **
Mutex
**:互斥锁,用于保护共享资源免受多个线程...
C语言
70,037
社区成员
243,243
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章