亚洲春色中文字幕久久久-三上亚,91精品国产亚一区二区三区,久久久九色综合亚洲成色777,涩涩视频下载,国产午夜亚洲精品午夜鲁丝片,国产精品A一区二区三区腾讯导航,影音先锋色情AV在线看片,蜜臀国产在线视频,极品少妇高潮啪啪无码吴梦梦 ,精品人妻无码一区二区三区手机版

標題: 淺談臨界區 [打印本頁]

作者: liuyang    時間: 2012-1-11 20:34
標題: 淺談臨界區
     我查找了資料,然后按自己的理解,吧它寫下來,如果新手看見了也可以了解下。 關于多線程同步有很多辦法,像臨界區,互斥對象,事件等等 ,臨界區不屬于內核對象其他的屬于內核對象,臨界區只能應許一個線程進入臨界區,其他線程在發現臨界區被占,就會讓出CPU而非等待時間片再次切換,這就 是區別。但是臨界區同步很快,所以盡量在需要的地方執行時間短的代碼段加上。它的一般用法

//申明臨界區變量

CRITICAL_SECTION cSec;

//初始化臨界區變量

InitializeCriticalSection(&cSec);

//進入臨界區
EnterCriticalSection(&cSec);

LeaveCriticalSection(&cSec);

注意:凡是需要同步的線程都需要加上 EnterCriticalSection(&cSec);LeaveCriticalSection(&cSec);  因為其他線程需要在EnterCriticalSection()后才能獲知是否有線程占用臨界區,如果被占讓出CPU,進入和離開臨界區必須是一起的, 否則線程就一直被一個線程占用。還有值得注意的是這個缺點是,一個進入臨界區的線程如果假死的話,那么這程序蕩掉了,所以有時候還要做點處理,至于怎么做 才查下資料吧。

  像其他內核對象,和這邊原理也差不多,先把一個對象給一個線程,其他線程必須等待那個對象是否已經釋放,否則線程就在那占著CPU空等。




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1