(1)原子訪問:interlocked系列函式
該系列的函式會保證對乙個值得遞增操作是原子操作,即不會被打斷。
(2)高速緩衝行
當cpu從記憶體中讀取乙個位元組的時候,它並不是從記憶體中取回乙個位元組,而是取回乙個高速緩衝行。高速緩衝行存在的目的是為了提高效能。一般來說,應用程式會對一組相鄰的位元組進行操作,如果所有位元組都在高速緩衝中,那麼cpu就不必訪問記憶體匯流排,後者耗費的時間比前者耗費的時間要多得多。
cpu讀取位元組時,將該位元組和它相鄰的位元組被讀到cpu的高速緩衝行中,這對於多處理器來說會變得非常困難。
當乙個cpu修改了高速緩衝行中的乙個位元組時,機器中的其他cpu會收到通知,並使自己的高速緩衝行作廢。
(3)高階執行緒同步
(4)關鍵段
當執行緒試圖進入乙個關鍵段時,但這個關鍵段正被另乙個執行緒占用的時候,函式會立即把呼叫執行緒切換到等待狀態,這意味著執行緒必須從使用者模式切換到核心模式(大約1000個cpu週期),這個切換的開銷非常大。
為了提高關鍵段的效能,microsoft把旋轉鎖合併到了關鍵段中,呼叫entercriticalsection的時候,會用乙個旋轉鎖不斷的迴圈,嘗試在一段時間內獲得對資源的訪問權,只有當嘗試失敗的時候,執行緒才會切換到核心模式並進入等待狀態。
(5)slim讀/寫鎖
srwlock對乙個資源進行保護,不讓其他執行緒訪問它。但與關鍵段不同的是srwlock允許我們區分那些想要讀取資源的值得執行緒(讀取者執行緒)和想要更新資源的值得執行緒(寫入者執行緒)。讓所有的讀取者執行緒在同一時刻訪問共享資源應該是可行的,這是因為僅僅讀取資源的值並不存在破壞資料的風險。只有當寫入者執行緒想要對資源進行更新的時候才需要進行同步。
(6)條件變數
《Windows核心程式設計》讀書筆記 五
第三章 核心物件 乙個核心物件就是乙個由核心分配的記憶體塊,該記憶體塊是一種資料結構,只能由該核心訪問。它的成員負責維護該物件的各種資訊,有些資料成員是所有物件型別中相同的,但大多數資料成員屬於特定的物件型別。比如訪問符號物件 事件物件 檔案物件 檔案對映物件 i o完成埠物件 作業物件 信箱物件 ...
Windows核心程式設計
內容簡介 這是一本經典的windows核心程式設計指南,從第1版到第5版,引領著數十萬程式設計師走入windows開發陣營,培養了大批精英。作為windows開發人員的必備參考,本書是為打算理解windows的c和c 程式設計師精心設計的。第5版全面覆蓋windows xp,windows vist...
《Windows核心程式設計》第五章 作業
include include include using namespace std typedef struct threadparam pthreadparam void monitorcompleteport lpvoid lpparam printf end thread success....