作者bourree (布雷舞曲)
看板LinuxDev
标题Re: [问题] 请教一个spinlock的问题
时间Mon Dec 20 21:26:44 2010
之所以会强调SMP系统
在於一般的 spinlock 用在 "一般的" kernel
single core 的系统会直接disable spinlock
这里所说的一般的 kernel
是指
没有 preemption 功能的 kernel
若打开 preemption, 则就算只有 1-core
spinlock 也有作用
至於你说的情况 thread 被另一个 thread preempt
采用 spinlock 也适用
基本上程式不会这麽写 (除非在kernel)
因为 spinlock 是 busy waiting
就算被另一个 thread preempt
则该 spinlock 也只能徒耗cpu time
因此这种情况下通常会使用 semaphore
因为semaphore 会做 context switch
※ 引述《chanting (PS)》之铭言:
: 请问一下
: spinlock属於busy waiting的机制
: 在SMP系统下可以解决同步的问题
: 但是在单一CPU下 若使用multithread机制
: 当一个thread被另一个thread preemptive 而这个thread也纯取shared data
: spinlock不是也可以解决这种同步的问题
: 可是我在书上还有google的结果
: 很多都说spinlock是用在SMP系统
: 请问是什麽原因呢 还是我理解错误
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.64.101.85