Re: [問題] 請教一個spinlock的問題
之所以會強調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
討論串 (同標題文章)
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章