Re: [問題] 請教一個spinlock的問題

看板LinuxDev作者 (布雷舞曲)時間15年前 (2010/12/20 21:26), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
之所以會強調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
文章代碼(AID): #1D3rcN6Y (LinuxDev)
討論串 (同標題文章)
文章代碼(AID): #1D3rcN6Y (LinuxDev)