青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 60, 文章 - 0, 評論 - 197, 引用 - 0
數據加載中……

Win32 同步機制摘要

一、互斥 mutex (mutual exclusion)

1. 一個時間,只能有一個線程擁有 mutex

2. mutex 跨進程使用,Critical section 只能在同一個進程使用

3. mutex 可指定等待時間

4. mutex 是內核對象,critical section 直接在 user mode 操作

5. 生成一個 mutex:
  
   HANDLE CreateMutex(LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner, LPCTSTR lpName);
   調用成功返回 handle; 否則返回 NULL, 可通過 GetLastError() 得到 error code


   example:
   ---------------
   HANDLE hMutex;
   hMutex = CreateMutex(NULL, FALSE, "demo");
   CloseHandle(hMutex);

6. mutex 未被任何線程擁有時,且有一個線程 wait 它時, 它便處于激發狀態; 一個線程等待一個未被激發的 mutex, 便稱其進入了阻塞(blocking)狀態

7. 釋放 mutex

   BOOL ReleaseMutex(HANDLE hMutex);

   成功 - TRUE, 失敗 - FALSE

8. API CreateMutex 為什么有一個最初擁有者?
  
   API CreateMutex 提供參數 BOOL bInitialOwner 的目的是要避免 race condition 的發生. 請看如下示例:

   HANDLE hMutex = CreateMutex(NULL, FALSE, "sample");
   int result = WaitForSingleObject(hMutex, INFINITE);

   如果在 CreateMutex 完成之后,發生 context switch, CPU 被切換到另一線程, 則其它進程可能在 mutex 的產生者調用 WaitForSingleObject()
   之前鎖住這個 mutex 對象. 這就會引發竟爭


二、信號量 (Semaphore)

1. 產生信號量
  
   HANDLE CreateSemaphore(LPSECURITY_ATTRIBUTES lpAttributes, LONG lInitialCount, LONG lMaxCount, LPCTSTR lpName);
   成功 - 返回一個 handle. 失敗 - 返回一個 NULL, 可通過 GetLastError() 獲得 error code

   一旦 semaphore 的現值降到 0, 就表示資源耗盡.此時如果任何一個線程如果調用 wait...() 函數則必須等待,直到某個鎖定被解除。

2. 解除鎖定

   BOOL ReleaseSamephore(HANDLE hSamephore, LONG lReleaseCount, LPLONG lpPreviousCount);
   此函數將 semaphore 的現值增加一個定額, 通常是 1, 并返回 semaphore 的前一個值。


三、事件對象(Event)

1. 什么是 Event
   一種核心對象, 它存在的目的就是成為激發態或未激發態, 這兩種狀態完全由程序來控制。你可以告訴一個 event 去做什么事情,什么時候去做.

2. 產生 event
  
   HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCTSTR lpName)

   lpEventAttributes: 安全屬性, NULL 指默認屬性.
   bManualReset: 如果為 FALSE, 表示這個 event 變成激發態(因為喚醒一個線程)之后,自動重置為非激發態; 如果為 TRUR, 則不會自動重置, 需要程序操作(ResetEvent())才可變成非激發態
   bInitialState: TRUE - 一開始處于激發態; FALSE - 一開始處于非激發態
   lpName: Event 對象的名稱

   調用成功返回 event handle, GetLastError() 會返回 0; 失敗-返回 NULL, 可通過 GetLastError() 獲得錯誤碼.


四、Interlock variables

1. 同步機制最簡單的類型是使用 Interlock 函數, 它對標準的 32 位變量進行操作,這些函數沒有提供 "等待" 機能,它只是保證對某個選定的變量的存取 "一個一個按順序來"。

2. Interlock variables 主要用于引用記數。允許對 4 字節的數值有些基本的同步操作, 不需要用到 Critical Section 或 mutex 之類(開銷大)。

3. 所謂的 Interlock 函數主要有兩個:
  
   LONG InterlockedIncrement(LPLONG lpTarget)

   LONG InterlockedDecrement(LPLONG lpTarget)

   變量經過運算(加 1 或 減 1),如果等于 0, 就返回 0;大于 0 傳回一個正值;小于 0 傳回一個負值。


posted on 2009-11-19 18:20 Normandy 閱讀(2394) 評論(2)  編輯 收藏 引用 所屬分類: Programming

評論

# re: Win32 同步機制摘要  回復  更多評論   

不錯啊!學習了
2009-11-20 19:00 | 99讀書人

# re: Win32 同步機制摘要  回復  更多評論   

學習了!
2009-11-22 14:23 | 喜樂遞女性購物
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            中文高清一区| 亚洲小说春色综合另类电影| 欧美一区二区三区免费观看视频| 午夜欧美不卡精品aaaaa| 国产亚洲欧美日韩美女| 久久久91精品| 麻豆av一区二区三区| 亚洲国产成人精品久久| 韩日精品在线| 伊人久久亚洲美女图片| 国产精品美女www爽爽爽| 另类亚洲自拍| 亚洲在线视频| 亚洲国产精品ⅴa在线观看| 亚洲午夜免费视频| 亚洲一区图片| 欧美一区激情视频在线观看| 中国成人黄色视屏| 亚洲免费电影在线| 亚洲国产精品成人精品| 国产一区二区久久精品| 国产精品户外野外| 久久久久久久久久久久久女国产乱| 亚洲国产美女精品久久久久∴| 亚洲国产精彩中文乱码av在线播放| 久久精品一二三区| 麻豆精品一区二区综合av | 欧美a一区二区| 亚洲欧美美女| 久久综合久久美利坚合众国| 亚洲国产欧美不卡在线观看 | 欧美一区二区在线播放| 久久久久久穴| 欧美一区激情| 久久综合给合久久狠狠色| 亚洲第一黄网| 久久国产88| 久久亚洲免费| 免费不卡在线视频| 欧美色精品在线视频| 亚洲麻豆av| 久久婷婷国产综合尤物精品| a91a精品视频在线观看| 亚洲欧美综合一区| 欧美日韩1区2区| 国产精品国产三级国产专播精品人| 亚洲日本理论电影| 久久人人爽人人| 亚洲天堂av电影| 欧美sm重口味系列视频在线观看| 欧美性大战久久久久久久| 狠狠综合久久| 亚洲激情午夜| 久久久久国产精品一区三寸| 国产精品久久久久久久久免费| 1024亚洲| 亚洲电影视频在线| 欧美二区在线观看| 一区二区三区国产盗摄| 亚洲欧洲在线一区| 欧美国产精品中文字幕| 亚洲高清在线视频| 毛片一区二区| 国产精品初高中精品久久| 一本大道久久a久久精二百| 亚洲大胆在线| 国产精品日韩一区二区三区| 亚洲视频大全| 黑人巨大精品欧美黑白配亚洲| 久久婷婷蜜乳一本欲蜜臀| 久久久综合网站| 久久综合五月| 欧美肥婆bbw| 午夜精品免费| 欧美午夜一区二区福利视频| 免费的成人av| 国产精品视频久久久| 久久不射2019中文字幕| 噜噜噜噜噜久久久久久91| 亚洲免费激情| 欧美黑人一区二区三区| 亚洲在线免费视频| 久久永久免费| 午夜欧美精品| 久久精品一区四区| 久久久国产精品一区二区三区| 欧美精品成人91久久久久久久| 欧美一区二区精美| 欧美破处大片在线视频| 男女视频一区二区| 在线观看欧美日本| 久久精品免费| 午夜亚洲福利| 欧美精品日韩| 一区二区三区高清不卡| 性欧美精品高清| 欧美va亚洲va香蕉在线| 欧美影院在线播放| 国产精品国产福利国产秒拍| 亚洲高清资源| 99这里有精品| 欧美午夜精品久久久久久浪潮| 亚洲精品资源美女情侣酒店| 最新国产拍偷乱拍精品 | 久久免费视频在线| 午夜精品久久久久久久99黑人| 国产精品成人国产乱一区| 亚洲国产美国国产综合一区二区| 亚洲精品美女久久7777777| 欧美精品久久天天躁| 一本久久综合亚洲鲁鲁| 99re6热在线精品视频播放速度| 欧美1区2区3区| 亚洲综合导航| 欧美黄色日本| 99伊人成综合| 国户精品久久久久久久久久久不卡| 免费短视频成人日韩| 一本久道久久综合中文字幕| 国模精品娜娜一二三区| 亚洲小说区图片区| 亚洲国产成人porn| 久久久久久亚洲精品中文字幕| 亚洲美女在线视频| 亚洲电影免费在线观看| 国产午夜精品一区二区三区视频| 欧美日韩国产专区| 欧美日韩黄色大片| 欧美高清视频免费观看| 亚欧美中日韩视频| 在线亚洲高清视频| 99re66热这里只有精品3直播 | 久久久五月婷婷| 免费短视频成人日韩| 欧美日本一区二区三区| 亚洲高清在线观看| 国产精品中文在线| 亚洲国产成人在线视频| 亚洲国产精品毛片| 日韩一二三区视频| 欧美另类高清视频在线| 欧美日精品一区视频| 国产精品任我爽爆在线播放| 国产一区二区三区最好精华液| 国产精品热久久久久夜色精品三区| 国产精品久久久久久久久| 海角社区69精品视频| 日韩一级大片在线| 嫩模写真一区二区三区三州| 国产精品国产三级国产a| 欧美国产日韩免费| 精品99视频| 久久精品国产视频| 国产精品99久久久久久久久| 牛牛国产精品| 亚洲欧洲日本一区二区三区| 久久精品视频免费| 蜜月aⅴ免费一区二区三区| 欧美精品在线网站| 先锋影音国产精品| 欧美精品一区二区视频| 伊大人香蕉综合8在线视| 亚洲电影毛片| 亚洲国产一区在线| 日韩亚洲精品视频| 国产精品久久久久久久久借妻 | 亚洲欧美日韩国产一区| 亚洲综合视频1区| 国产毛片一区| 久久久青草青青国产亚洲免观| 亚洲国产欧美精品| 亚洲自拍偷拍网址| 国产亚洲精品自拍| 欧美福利视频一区| 午夜日韩激情| 91久久精品日日躁夜夜躁国产| 亚洲一区二区在线观看视频| 国产欧美一区二区精品性| 久久精品男女| 亚洲人体1000| 国模精品一区二区三区| 久久综合色88| 亚洲一区二区成人| 欧美高清在线一区二区| 亚洲尤物在线| 亚洲韩国日本中文字幕| 国产精品国产a| 免费观看一级特黄欧美大片| 在线午夜精品| 亚洲高清不卡av| 一本久久a久久免费精品不卡| 亚洲电影毛片| 亚洲私人影院| 国产精品久久久| 亚洲另类自拍| 欧美在线视屏| 亚洲一区二区三区视频| 91久久精品一区| 蜜臀99久久精品久久久久久软件| 亚洲欧美国产另类|