1
查看workqueue.c,看起來好像只有正確鎖定的部分位於公開的API和運行的內部線程之間。在關鍵部分之外似乎有些事情(對於我未經訓練的人來說)可能是不安全的?work_queue線程安全嗎?
我正確或基礎?
查看workqueue.c,看起來好像只有正確鎖定的部分位於公開的API和運行的內部線程之間。在關鍵部分之外似乎有些事情(對於我未經訓練的人來說)可能是不安全的?work_queue線程安全嗎?
我正確或基礎?
我認爲你正在談論Linux內核中的workqueue.c? http://lxr.linux.no/#linux+v3.2.9/kernel/workqueue.c
在這種情況下,只使用公共API,假設它是線程安全的,並向Ingo Molnar報告任何問題。請注意,大多數內核開發人員非常聰明,不會再次重做「大鎖」的錯誤:並非所有內容都在互斥量下運行,因爲並非所有事情都需要。像RCU這樣的技巧(讀取副本更新)也減少了所需的鎖定量。 而沒有鎖的東西會表現得更好。
你能更具體一點嗎? – pmdj 2012-03-01 19:59:02
內核中沒有關鍵部分。只有信號量,自旋鎖,兩者的讀寫器變體,完成,irqsaves,原子操作,內存屏障,謹慎排序和每CPU數據結構。他們每個人都有精確定義的案例集合,並且可以精確地定義可以使用的上下文環境,所以甚至不可能使用一件事物來鎖定整個事物。 – 2012-03-02 13:33:20