Redian新闻
>
【EB3 2015年三月第63绿】迟到的报绿。TSC 11.7 EB2--〉EB3
avatar
【EB3 2015年三月第63绿】迟到的报绿。TSC 11.7 EB2--〉EB3# EB23 - 劳工卡
y*1
1
spinlock 和 semaphore, mutex 的 区别????
可是感觉没有回答到点上。
spinlock: 1,hold lock 时间短,2,busy wait, 中断里用
semaphore 和 mutex: 1, hold lock 时间长, 2,block wait,中断里不可用
不知道还有其他吗??
谢谢!!
avatar
b*e
2
EB2--EB3, TSC
PD July 2011
RD May 2014
Card received March 25, 2015
SR and 议员。
avatar
m*0
3
Here is what I found:
spinlock:
It is a big CPU sucker and its biggest risk is being interrupted by OS
scheduler while holding the lock.
One needs to be very careful during implementation to reduce unnecessary
busy waiting
In general, works only with hardware atomic support such as test-and-set
mutex: resource can be accessed only by 1 at a time
semaphore: # of accessors to the resource at a time depending on the
initialization of the semaphore. When it is initialized to 1, it has same
effect as using mutex.

【在 y****1 的大作中提到】
: spinlock 和 semaphore, mutex 的 区别????
: 可是感觉没有回答到点上。
: spinlock: 1,hold lock 时间短,2,busy wait, 中断里用
: semaphore 和 mutex: 1, hold lock 时间长, 2,block wait,中断里不可用
: 不知道还有其他吗??
: 谢谢!!

avatar
y*0
4
坏!苹果。。
cong!
avatar
b*m
5
楼主确实没答到点子上。
avatar
b*e
6
谢谢斑竹,这么快

【在 y******0 的大作中提到】
: 坏!苹果。。
: cong!

avatar
s*k
7
spin lock和mutex相比,前者busy waiting,后者可能被context switch出去,跟hold
时间长短没关系,spin lock用得不好一样hold时间长,造成很大的性能损失。但是有
些时候你急需lock,比如很多系统里面的维护heartbeat什么,mutex不如spin lock快。
mutex和semaphore,很多人都会说一个是binary,一个可以是any number,但是这个其
实不是根本区别。mutex只能被获取它的process/thread释放,而semaphore可以被其他
的process/thread释放(经常在embedded里面比如某个timer interrupt建立或者释放
semaphore然后其余thread去access,用来保证某个时间段里面某种资源最多被调用多
少次)。所以mutex应该说是用在mutual exclusion,而semaphore多用在sync
avatar
v*6
8
cong
avatar
s*s
9
另外, mutex 和 semaphore, 一个可以recursive, 一个不行
avatar
r*z
10
Congrats!
avatar
j*I
11
看了一下,好像spinlock和mutex的一个主要区别是后者是系统维护,前者是thread自
己check. short waiting的情况下,前者比较efficient.
mutex和semaphore的区别你研究的太深了吧。any number和binary一般足够了。说多了
反而容易露马脚吧。

hold
快。

【在 s********k 的大作中提到】
: spin lock和mutex相比,前者busy waiting,后者可能被context switch出去,跟hold
: 时间长短没关系,spin lock用得不好一样hold时间长,造成很大的性能损失。但是有
: 些时候你急需lock,比如很多系统里面的维护heartbeat什么,mutex不如spin lock快。
: mutex和semaphore,很多人都会说一个是binary,一个可以是any number,但是这个其
: 实不是根本区别。mutex只能被获取它的process/thread释放,而semaphore可以被其他
: 的process/thread释放(经常在embedded里面比如某个timer interrupt建立或者释放
: semaphore然后其余thread去access,用来保证某个时间段里面某种资源最多被调用多
: 少次)。所以mutex应该说是用在mutual exclusion,而semaphore多用在sync

avatar
n*h
12
gxgx!!!
avatar
s*k
13
更正一下,spin lock也可以被context switch出去,这样更危险,因为如果thread没
有释放spinlock就被INT了,其他的thread也拿不到这个资源。基本相当于系统锁死了。

【在 j*****I 的大作中提到】
: 看了一下,好像spinlock和mutex的一个主要区别是后者是系统维护,前者是thread自
: 己check. short waiting的情况下,前者比较efficient.
: mutex和semaphore的区别你研究的太深了吧。any number和binary一般足够了。说多了
: 反而容易露马脚吧。
:
: hold
: 快。

avatar
t*p
14
恭喜。。。好有定力啊。都是等收了卡才来报绿。。。。
avatar
B*1
15
弱问,spin lock就是在spin,还会被switch吗?

了。

【在 s********k 的大作中提到】
: 更正一下,spin lock也可以被context switch出去,这样更危险,因为如果thread没
: 有释放spinlock就被INT了,其他的thread也拿不到这个资源。基本相当于系统锁死了。

avatar
H*C
16
恭喜!
avatar
s*k
17
比如好几个thread同时access某段代码做spinlock,某个thread拿到了之后,但是耗得
时间太多了,被kernel重新schedule INT了,就被context switch出去了,但是它的
spinlock还没有释放,其他同时access spinlock threads就会一直busy waiting,直
接拖死系统了。

【在 B*******1 的大作中提到】
: 弱问,spin lock就是在spin,还会被switch吗?
:
: 了。

avatar
a*q
18
cong
avatar
w*2
20
Cong
avatar
j*I
21
文档说spinlock适合那种short waiting.你说的这种情况应该是典型不符合。

【在 s********k 的大作中提到】
: 比如好几个thread同时access某段代码做spinlock,某个thread拿到了之后,但是耗得
: 时间太多了,被kernel重新schedule INT了,就被context switch出去了,但是它的
: spinlock还没有释放,其他同时access spinlock threads就会一直busy waiting,直
: 接拖死系统了。

avatar
c*i
22
恭喜恭喜
avatar
u*0
23
恭喜!
avatar
M*r
24
cong!
avatar
w*9
25
cong
avatar
a*i
26
恭喜

【在 w******9 的大作中提到】
: cong
avatar
u*u
27
cong
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。