自旋鎖糾偏

自旋鎖多出如今多處理器(核,線程)上的緣由是在單處理器中自旋是沒有意義的。 spa

由於在只有一個核或指令流的處理器中,除非被調度不然不可能「等」到任何東西。由於「所有」處理資源都已經被佔用。 線程

這是自旋鎖多見於多處理器(核,超線程)上的根本緣由。 進程

即在單(邏輯)處理器上面最好的去等待something發生的方法那就是把本身退出執行(阻塞掉),因此才能把機會讓給其它的邏輯處理器執行。自旋是沒有意義的。 資源

可是這個條件在多處理器上已經被resolve掉了,由於多邏輯處理器就像多個活動的Actor,互相「等待」是合理的。即使是長時間的等待在有些時候也是合理的,不能斷然就說不行或很差。 同步

「歷史」上,對於「單物理多邏輯處理器」起至奔騰4的超線程技術。在這樣的處理器上稍稍自旋一下能夠避免處理器進行狀態切換,這是個絕對的正收益。狀態切換在現代處理器上的開銷是很是高的。事實上,一個沒有同步的單線程任務效率有時是很是高的。 效率

並且另外一點就是,多處理器原本就幫助避免了不少的線程切換,若是還堅持在這樣的環境中動不動就切換進程上下文,有點不合時宜。守舊。因此在多處理器時代多用自旋鎖的確是一個好的practice! 方法

相關文章
相關標籤/搜索