標(biāo)題: 淺談臨界區(qū) [打印本頁]
作者: liuyang 時間: 2012-1-11 20:34
標(biāo)題: 淺談臨界區(qū)
我查找了資料,然后按自己的理解,吧它寫下來,如果新手看見了也可以了解下。 關(guān)于多線程同步有很多辦法,像臨界區(qū),互斥對象,事件等等
,臨界區(qū)不屬于內(nèi)核對象其他的屬于內(nèi)核對象,臨界區(qū)只能應(yīng)許一個線程進(jìn)入臨界區(qū),其他線程在發(fā)現(xiàn)臨界區(qū)被占,就會讓出CPU而非等待時間片再次切換,這就
是區(qū)別。但是臨界區(qū)同步很快,所以盡量在需要的地方執(zhí)行時間短的代碼段加上。它的一般用法
//申明臨界區(qū)變量
CRITICAL_SECTION cSec;
//初始化臨界區(qū)變量
InitializeCriticalSection(&cSec);
//進(jìn)入臨界區(qū)
EnterCriticalSection(&cSec);
LeaveCriticalSection(&cSec);
注意:凡是需要同步的線程都需要加上
EnterCriticalSection(&cSec);LeaveCriticalSection(&cSec);
因為其他線程需要在EnterCriticalSection()后才能獲知是否有線程占用臨界區(qū),如果被占讓出CPU,進(jìn)入和離開臨界區(qū)必須是一起的,
否則線程就一直被一個線程占用。還有值得注意的是這個缺點是,一個進(jìn)入臨界區(qū)的線程如果假死的話,那么這程序蕩掉了,所以有時候還要做點處理,至于怎么做
才查下資料吧。
像其他內(nèi)核對象,和這邊原理也差不多,先把一個對象給一個線程,其他線程必須等待那個對象是否已經(jīng)釋放,否則線程就在那占著CPU空等。
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
免费在线成人
|
亚洲午夜电影
|
欧美日韩久久精品
|
亚洲精品乱码久久久久v最新版
|
国产一区二区三区免费视频
|
久久久青草婷婷精品综合日韩
|
视频一区在线观看
|
亚洲一区二区三区免费视频
|
伊人精品在线视频
|
www国产成人免费观看视频
|
91免费视频观看
|
欧美精品一二区
|
国产精品久久久久久久久久免费看
|
在线一区|
婷婷成人在线
|
91视频进入
|
久久久观看|
精品三级
|
久久ww|
日韩一级精品视频在线观看
|
一级黄色av电影
|
精品久久国产
|
久久成人人人人精品欧
|
激情综合五月
|
亚洲视频在线免费观看
|
性高朝久久久久久久3小时
av一区二区三区四区
|
欧美精品一区二区三
|
中文字幕亚洲一区二区三区
|
成人精品一区二区三区中文字幕
|
成人国产在线视频
|
亚欧洲精品在线视频免费观看
|
最近中文字幕在线视频1
|
久久小视频
|
一级片av|
99亚洲综合
|
国产精品美女久久久久久免费
|
爱综合|
欧美美女爱爱视频
|
亚洲欧美综合精品久久成人
|
欧美激情精品久久久久久变态
|
亚洲成人黄色
|