看板 LinuxDev 關於我們 聯絡資訊
請問一下 spinlock屬於busy waiting的機制 在SMP系統下可以解決同步的問題 但是在單一CPU下 若使用multithread機制 當一個thread被另一個thread preemptive 而這個thread也純取shared data spinlock不是也可以解決這種同步的問題 可是我在書上還有google的結果 很多都說spinlock是用在SMP系統 請問是什麼原因呢 還是我理解錯誤 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.251.61.85
askacis:個人認為有支援preemption的kernel,不論多少顆cpu, 12/17 13:23
askacis:spinlock都還是有作用的~~ 12/17 13:23
alongalone:問題本身很奇怪,spin_lock已經說明是busy waiting的機 12/17 23:21
alongalone:制,就是表明它要lock住目前的cpu的resource,不希望被 12/17 23:22
alongalone:打斷;你現在又用preemptive的方法去存取資料 12/17 23:24
alongalone:那用spin_lock的目的是為了? mutex_lock_interrput應該 12/17 23:25
alongalone:更符合這個要求 12/17 23:26
askacis:spinlock的好處是可以用在中斷ISR裡,因為ISR不能休眠~~ 12/18 01:54
chanting:所以我問題就是在他保證不preemptive 12/18 12:56
chanting:包含SMP與multithread 12/18 12:57
chanting:那書上要特別強調用在SMP上 12/18 12:57
chanting:因為在multithread他也可以保證preemptive 12/18 13:00
chanting:應不用特強調是在SMP下吧 12/18 13:01
Rainlysu:在 lock 一個 spin_lock_t 時會將 prempt_count 加 1 12/21 22:38
Rainlysu:這種情況下,這個 thread 不會被 prempt 12/21 22:41