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