国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 課堂 > 電腦知識 > 正文

windows操作系統的同步機制

2024-05-08 14:58:06
字體:
來源:轉載
供稿:網友

  最近看了下windows核心編程,雖然是比較老的書,但是感覺還是蠻有用的,順便復習了一些操作系統的知識,比如本文的進程同步機制

  用戶模式下的線程同步

  線程之間需要通信:

  1.需要讓多個線程同時訪問一個共享資源,同時不能破壞資源的完整性

  2.一個線程需要通知其他線程某項任務已經完成

  方法一:原子訪問:Interlocked系列函數

  InterlockedExchangeAdd(long & ,int );

  InterlockedIncrement;

  InterlockedExchange;(實現旋轉鎖是有用)

  必須保證傳給這些函數的變量地址是對齊的,否則函數可能失敗

  interlockde函數不需要在內核模式與用戶模式之間切換

  旋轉鎖:禁用線程優先級提升

  多處理器的機器旋轉鎖比較有用,

  關鍵段:先循環一定次數,如果還是無法訪問,線程切換至內核模式,直到資源可用

  interlockedcompareexchange

  方法二:關鍵段

  CRITICAL_SECTION g_cs;

  EnterCriticalSection(&g_cs)

  …

  LeaveCrititalSection(&g_cs)

  關鍵段無法在多個進程之間對線程同步

  方法三:Slim讀/寫鎖

  和關鍵段相似,但是區分讀取線程和寫入線程

  SRWLOCK

  用內核對象進行線程同步

  在進程內核對象內部有一個布爾變量,當系統創建內核對象的時候會把這個變量的值初始化為false(未觸發),當進程終止時,操作系統會把相應的內核對象中的值設置為true,表示已經觸發。

  等待函數:WaitForSingleObject(HANDLE,DWord)

  WaitForMultipleObjects(DWORD,CONST HANDLE* ,BOOL,DWORD)

  事件內核對象

  讓一個線程執行初始化工作,然后出發另一個線程,讓它執行余下的工作

  createEvent()

  OpenEvent()

  SetEvent()//觸發時

  ResetEvetn()

  可等待的計數器內核對象

  createWaitableTimer()

  OpenwaitableTimer()

  SetWaitableTimer()//觸發時

  信號量

  互斥量


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 富源县| 萨嘎县| 吉木萨尔县| 彝良县| 吉水县| 新安县| 昭苏县| 东宁县| 青铜峡市| 古交市| 方山县| 清原| 唐山市| 呼伦贝尔市| 应用必备| 麻阳| 乐至县| 呼玛县| 平安县| 北海市| 新巴尔虎左旗| 宁河县| 溆浦县| 西安市| 灵川县| 额尔古纳市| 大丰市| 天台县| 南木林县| 新干县| 棋牌| 怀柔区| 石河子市| 南召县| 阿瓦提县| 封丘县| 金秀| 洞口县| 邳州市| 双桥区| 清徐县|