y****1 发帖数: 58 | 1 谢谢!
spinlock 没有 context switch,用他的操作需要是 atomic operation
这是最主要的吗?
谢谢 |
c*****l 发帖数: 879 | |
g*******s 发帖数: 2963 | 3 mutex: 一个厕所,A在用,B来敲了下进不去,就走开一会,等会再试。
spinlock: 一个厕所,A在用,B很急,就一直站那敲门,直到A完事。
semaphore: N个厕所,来一个人占一个,直到N个都满,就谢绝入内,除
非一个人完事后面的人才能进。
另外很多实际应用是hybrid,先spinlock敲两下,如果等一小会还不出来就进入mutex
状态。 |
l*******e 发帖数: 127 | 4 还有某些情况下不允许你context switch,必须busy wait,比如kernel mode的driver
经常用。
谢谢!spinlock 没有 context switch,用他的操作需要是 atomic operation这是最
主要的吗?谢谢
【在 y****1 的大作中提到】 : 谢谢! : spinlock 没有 context switch,用他的操作需要是 atomic operation : 这是最主要的吗? : 谢谢
|
b*****t 发帖数: 296 | 5 相当受教!
mutex
【在 g*******s 的大作中提到】 : mutex: 一个厕所,A在用,B来敲了下进不去,就走开一会,等会再试。 : spinlock: 一个厕所,A在用,B很急,就一直站那敲门,直到A完事。 : semaphore: N个厕所,来一个人占一个,直到N个都满,就谢绝入内,除 : 非一个人完事后面的人才能进。 : 另外很多实际应用是hybrid,先spinlock敲两下,如果等一小会还不出来就进入mutex : 状态。
|
o****d 发帖数: 2835 | 6 首先 lock是locking mechanism,而semaphore是signal mechanism
lock只能被同一个线程lock和unlock,而semaphore可以不同线程通过信号协同作用
另外,lock分spinlock和blocking lock(mutex)
他们的区别ls也已经说了
spinlock比较适合 等待时间比较短的情况,还有kernel的lock也是用spinlock;
而blocking lock适合等待时间比较长的情况,因为context switch比较耗时
还有spinlock+blocking lock的组合,先spin一阵然后用blocking lock
【在 y****1 的大作中提到】 : 谢谢! : spinlock 没有 context switch,用他的操作需要是 atomic operation : 这是最主要的吗? : 谢谢
|