<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. 操作系統

    windows操作系統的同步機制與性能

    時間:2025-04-16 03:42:20 操作系統 我要投稿
    • 相關推薦

    windows操作系統的同步機制與性能

      windows操作系統的同步機制與性能

      最近看了下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()//觸發時

      信號量

      互斥量

    【windows操作系統的同步機制與性能】相關文章:

    Windows XP操作系統內存性能優化10-08

    什么是windows操作系統11-02

    Windows操作系統的特點07-11

    什么是windows操作系統01-23

    Windows操作系統優化技巧09-02

    Windows操作系統使用技巧09-22

    Windows 7操作系統技巧09-20

    Windows操作系統的維護常識07-05

    WINDOWS操作系統的進程描述10-13

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人