精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

C語(yǔ)言邊角料2:用純軟件來(lái)代替Mutex互斥鎖

開(kāi)發(fā) 后端
在 Linux 系統(tǒng)中,當(dāng)多個(gè)線程并行執(zhí)行時(shí),如果需要訪問(wèn)同一個(gè)資源,那么在訪問(wèn)資源的地方,需要使用操作系統(tǒng)為我們提供的同步原語(yǔ)來(lái)進(jìn)行保護(hù)。同步原語(yǔ)包括:互斥鎖、條件變量、信號(hào)量等,被保護(hù)的代碼稱作“臨界區(qū)”。

[[388911]]

一、前言

在 Linux 系統(tǒng)中,當(dāng)多個(gè)線程并行執(zhí)行時(shí),如果需要訪問(wèn)同一個(gè)資源,那么在訪問(wèn)資源的地方,需要使用操作系統(tǒng)為我們提供的同步原語(yǔ)來(lái)進(jìn)行保護(hù)。同步原語(yǔ)包括:互斥鎖、條件變量、信號(hào)量等,被保護(hù)的代碼稱作“臨界區(qū)”。

這是非常正規(guī)的流程,我們基本上也都是這么做的。

那有沒(méi)有想過(guò),這些同步原語(yǔ)對(duì)代碼的執(zhí)行效率會(huì)產(chǎn)生多大的影響?是否可以不使用操作系統(tǒng)提供的這些機(jī)制,而是用其它純軟件的方法也能達(dá)到保護(hù)臨界區(qū)的目的呢?

這篇文章我們介紹一下 Peterson(皮特森)算法,也許實(shí)用性不強(qiáng),但是可以給我們帶來(lái)一些思考,提高我們的編程元技能。

二、Peterson 算法簡(jiǎn)介

這個(gè)算法主要用來(lái)解決臨界區(qū)的保護(hù)問(wèn)題。我們知道,一個(gè)臨界區(qū)必須保證 3 個(gè)條件:

  1. 互斥訪問(wèn): 在任意一個(gè)時(shí)刻,最多只能有一個(gè)線程可以進(jìn)入臨界區(qū);
  2. 空閑讓進(jìn):當(dāng)沒(méi)有線程正在執(zhí)行臨界區(qū)的代碼時(shí),必須在所有申請(qǐng)進(jìn)入臨界區(qū)的線程中,選擇其中的一個(gè),讓它進(jìn)入臨界區(qū);
  3. 有限等待:當(dāng)一個(gè)線程申請(qǐng)進(jìn)去臨界區(qū)時(shí),不能無(wú)限的等待,必須在有限的時(shí)間內(nèi)獲得許可進(jìn)入臨界區(qū)。也就是說(shuō),不論其優(yōu)先級(jí)多低,不應(yīng)該餓死在該臨界區(qū)入口處。

Peterson算法是一個(gè)實(shí)現(xiàn)互斥鎖的并發(fā)程序設(shè)計(jì)算法,可以控制兩個(gè)線程訪問(wèn)一個(gè)共享的用戶資源而不發(fā)生訪問(wèn)沖突。

Peterson 算法是基于雙線程互斥訪問(wèn)的 LockOne 與 LockTwo 算法而來(lái)。

  1. LockOne 算法使用一個(gè) flag 布爾數(shù)組來(lái)實(shí)現(xiàn)互斥;
  2. LockTwo 使用一個(gè) turn 的整型量來(lái)實(shí)現(xiàn)互斥;

這 2 個(gè)算法都實(shí)現(xiàn)了互斥,但是都存在死鎖的可能。Peterson 算法把這兩種算法結(jié)合起來(lái),完美地用軟件實(shí)現(xiàn)了雙線程互斥問(wèn)題。

算法說(shuō)明如下


兩個(gè)重要的全局變量:

1. flag 數(shù)組:有 2 個(gè)布爾元素,分別代表一個(gè)線程是否申請(qǐng)進(jìn)入臨界區(qū);

2. turn:如果 2 個(gè)線程都申請(qǐng)進(jìn)入臨界區(qū),這個(gè)變量將會(huì)決定讓哪一個(gè)線程進(jìn)入臨界區(qū);

三、測(cè)試代碼

  1. // 被 2 個(gè)線程同時(shí)訪問(wèn)的全局資源 
  2. static int num = 0;  
  3.  
  4. BOOL flag[2] = { 0 }; 
  5. int turn = 0; 
  6.  
  7. void *thread0_routine(void *arg) 
  8.     for (int i = 0; i < 1000000; ++i) 
  9.     { 
  10.         flag[0] = TRUE
  11.         turn = 1; 
  12.         while (TRUE == flag[1] && 1 == turn); 
  13.  
  14.         // 臨階區(qū)代碼 
  15.         num++;  
  16.          
  17.         flag[0] = FALSE
  18.     } 
  19.      
  20.     return NULL
  21.  
  22. void *thread1_routine(void *arg) 
  23.     for (int i = 0; i < 1000000; ++i) 
  24.     { 
  25.         flag[1] = TRUE
  26.         turn = 0; 
  27.         while (TRUE == flag[0] && 0 == turn); 
  28.  
  29.         // 臨階區(qū)代碼 
  30.         num++; 
  31.          
  32.         flag[1] = FALSE
  33.     } 
  34.  
  35.     return NULL

全局資源 num 的初始值為 0 ,兩個(gè)編程分別遞增 100 萬(wàn)次,因此最終結(jié)果應(yīng)該是 200 萬(wàn),實(shí)際測(cè)試結(jié)果也確實(shí)如此。

四、Mutex 互斥鎖對(duì)代碼執(zhí)行效率的影響

1. 單線程中:Mutex 互斥鎖對(duì)代碼執(zhí)行效率的影響

  1. for (int i = 0; i < 1000000; ++i) 
  2.     num++; 

以上代碼,耗時(shí)約:1.8ms -- 3.5ms。

  1. for (int i = 0; i < 1000000; ++i) 
  2.     pthread_mutex_lock(&mutex); 
  3.     num++; 
  4.     pthread_mutex_unlock(&mutex); 

以上代碼,耗時(shí)約:23.9ms -- 38.9ms??梢钥闯觯湘i和解鎖對(duì)代碼執(zhí)行效率的影響還是很明顯的。

2. 多線程中:Mutex 互斥鎖對(duì)代碼執(zhí)行效率的影響

  1. void *thread0_routine(void *arg) 
  2.     for (int i = 0; i < 1000000; ++i) 
  3.     { 
  4.         pthread_mutex_lock(&mutex); 
  5.         num++; 
  6.         pthread_mutex_unlock(&mutex); 
  7.     } 
  8.      
  9.     return NULL
  10.  
  11. void *thread1_routine(void *arg) 
  12.     for (int i = 0; i < 1000000; ++i) 
  13.     { 
  14.         pthread_mutex_lock(&mutex); 
  15.         num++; 
  16.         pthread_mutex_unlock(&mutex); 
  17.     } 
  18.  
  19.     return NULL

耗時(shí):

  • thread0: diff = 125.8ms
  • thread1: diff = 129.1ms

3. 在兩個(gè)線程中,使用 Peterson 算法來(lái)保護(hù)臨界區(qū)

耗時(shí):

  • thread1: diff = 1.89ms
  • thread0: diff = 1.94ms

五、總結(jié)

Peterson 算法使用純軟件來(lái)保護(hù)臨界區(qū),比使用操作系統(tǒng)提供的互斥鎖表現(xiàn)出了更好的性能。

但是它也有一個(gè)缺點(diǎn):只能使用在 2 個(gè)線程中,但是由于它與平臺(tái)無(wú)關(guān),在某些特殊的場(chǎng)合,也許能夠拿來(lái)為我們所用!

 

責(zé)任編輯:姜華 來(lái)源: IOT物聯(lián)網(wǎng)小鎮(zhèn)
相關(guān)推薦

2021-03-24 08:02:58

C語(yǔ)言

2021-03-26 11:29:58

C語(yǔ)言PragmaAPI

2021-03-30 11:33:03

C語(yǔ)言頭文件開(kāi)發(fā)

2021-05-11 11:31:52

C語(yǔ)言類型指針

2024-10-14 08:51:52

協(xié)程Go語(yǔ)言

2023-12-24 12:33:20

互斥鎖Go代碼

2024-11-28 09:47:53

C#互斥鎖Mutex

2023-06-02 08:29:24

https://wwMutex

2024-06-28 08:45:58

2021-05-25 09:28:34

鴻蒙HarmonyOS應(yīng)用

2020-08-26 08:59:58

Linux線程互斥鎖

2020-09-28 06:49:50

Linux系統(tǒng)編程互斥量mutex

2025-09-22 04:00:00

2024-06-24 08:10:00

C++互斥鎖

2021-05-24 06:40:59

C語(yǔ)言Linux軟件庫(kù)

2023-09-25 12:45:45

Go 語(yǔ)言可視化sync.Mute

2013-06-24 15:32:00

c++GCC

2009-08-26 17:24:49

C# Mutex對(duì)象

2025-05-06 08:20:00

互斥鎖C++編程

2022-04-13 14:43:05

JVM同步鎖Monitor 監(jiān)視
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

长河落日免费高清观看| 97成人在线观看视频| 国产一区二区三区在线观看| 欧美aaaa视频| 欧美成人午夜电影| 免费看一级大黄情大片| 福利片在线看| 国产精品538一区二区在线| 久热精品在线视频| 日本aaa视频| 天堂久久一区| 精品久久久久久久久国产字幕| 午夜精品亚洲一区二区三区嫩草| 精品国产乱码久久久久久蜜臀网站| 好吊一区二区三区| 中文字幕视频一区二区在线有码| 久久久久亚洲av无码网站| 亚洲一区站长工具| 亚洲美女淫视频| 狠狠色噜噜狠狠狠狠色吗综合| 欧美国产一级片| 午夜精品婷婷| 正在播放欧美一区| 欲求不满的岳中文字幕| 在线播放成人| 色噜噜偷拍精品综合在线| 国产在线拍揄自揄拍无码| 日韩av成人| 福利一区二区在线| 91久久精品国产91久久性色| 日本在线播放视频| 亚洲乱码电影| 在线中文字幕日韩| 一本色道久久综合亚洲精品图片| 日本一区二区三区播放| 欧美在线免费播放| 国产精品-区区久久久狼| 青青在线视频| 亚洲色图欧洲色图婷婷| 日韩精品福利视频| 五月婷婷久久久| 国产成人久久精品77777最新版本| 国产精品久久久久免费a∨大胸| 久久久精品人妻一区二区三区四| 影音先锋日韩在线| 一区二区三区黄色| 亚洲人成人无码网www国产| 麻豆一区二区| 亚洲电影中文字幕| 97精品人人妻人人| 天堂久久av| 69成人精品免费视频| 一区二区三区网址| 2019年精品视频自拍| 一本一道波多野结衣一区二区| 黄色片网址在线观看| 免费网站在线观看人| 亚洲激情五月婷婷| 尤物国产精品| 久久亚洲天堂| 亚洲欧美日韩国产综合| 在线精品日韩| 黄色成人在线观看| 亚洲精品成人少妇| 国产乱淫av片杨贵妃| 超碰在线网站| 偷窥少妇高潮呻吟av久久免费| 青青青免费在线| 交100部在线观看| 福利视频一区二区| 波多野结衣作品集| 成人亚洲网站| 欧美日韩成人综合| 999热精品视频| 波多野结衣一区二区三区免费视频| 欧美大片在线观看一区二区| 日本天堂在线播放| 五月国产精品| 最新中文字幕亚洲| 波多野结衣喷潮| 午夜视频一区| 77777亚洲午夜久久多人| 中文字幕国产在线观看| 日韩精品91亚洲二区在线观看 | xxx.xxx欧美| 黑人精品xxx一区一二区| 免费看a级黄色片| 99精品美女视频在线观看热舞 | 成人综合日日夜夜| 6080午夜不卡| 天天插天天射天天干| 国产尤物久久久| 精品国产自在精品国产浪潮| 久久久久免费看| 日韩高清在线观看| 99re视频在线观看| 国产天堂素人系列在线视频| 亚洲色图视频网| 日本wwww视频| 国产一区二区三区亚洲综合| 亚洲精品久久久久久久久久久久| 手机毛片在线观看| 亚洲第一精品影视| 国产在线观看精品| 亚洲欧美一区二区三| 成人免费在线播放视频| 欧美 日本 亚洲| 成人网av.com/| 亚洲精品电影在线| 黄色录像一级片| 西西裸体人体做爰大胆久久久| 成人h视频在线观看播放| 亚洲 欧美 精品| 亚洲精品伦理在线| 欧美成人黄色网址| 乱亲女h秽乱长久久久| 另类专区欧美制服同性| 欧美a视频在线观看| 国产不卡高清在线观看视频| 亚洲国产日韩综合一区| 亚洲少妇视频| 亚洲精品在线电影| 国产精品视频看看| 欧美专区18| 国产精品视频免费一区二区三区| 日本精品一区二区三区在线播放| 香蕉成人啪国产精品视频综合网| 午夜视频在线网站| 国产欧美日韩精品一区二区免费 | 美女少妇全过程你懂的久久| 免费网站在线观看人| 国产精品无码一区二区桃花视频| 亚洲天堂网一区二区| 久久午夜夜伦鲁鲁一区二区| 日本一区免费看| 成人国产精品免费视频| 99久久精品无码一区二区毛片| 国产精品第二十页| 久久99深爱久久99精品| 日本在线免费观看一区| 久久男人天堂| 精品国产电影一区二区| 欧美在线视频第一页| 青青草国产成人99久久| 日本不卡二区| 玛雅亚洲电影| 日韩精品在线免费观看视频| 麻豆视频在线观看| 国产乱人伦偷精品视频不卡| 久久久久www| 精品人在线二区三区| 亚洲曰韩产成在线| 国产欧美一区二区三区在线看蜜臀 | 国产亚洲精品综合一区91| 精品国产拍在线观看| 亚洲欧美中文在线视频| 日韩毛片在线观看| 91麻豆精品久久久久蜜臀| 欧美一级久久久| 91精品国产麻豆国产自产在线| 中文字幕中文字幕一区| 国产精品白丝av| 99视频+国产日韩欧美| 日本少妇精品亚洲第一区| 在线网址91| 欧美一级特黄aaaaaa大片在线观看| 精品人妻一区二区三区换脸明星 | 久久国产精品无码网站| 美女黄色成人网| 亚洲无线视频| 欧美一级播放| 久久成人一区| 久久精品123| 三级欧美在线一区| 亚洲精品四区| 一区二区三区四区在线观看国产日韩| 小嫩嫩12欧美| 久久久亚洲欧洲日产| 玖玖玖电影综合影院| 僵尸再翻生在线观看| 久久国产精品黑丝| 9191在线观看| a√资源在线| 99se视频在线观看| 色综合888| 国产高清自拍视频在线观看| 超碰福利在线观看| 日韩女优在线视频| 熟女人妇 成熟妇女系列视频| 日本免费一级视频| 成人免费a级片| 精品久久久久久久无码| 国产天堂在线播放| 午夜激情视频网| 暗呦丨小u女国产精品| 国产精品传媒在线观看| 亚洲色诱最新| 欧美深深色噜噜狠狠yyy| 国语自产精品视频在线看抢先版结局| 大量国产精品视频| 日本人妖在线| 91精品国产色综合久久不卡电影 | 免费黄色av片| 亚洲激情自拍视频| 亚洲自拍偷拍图| 粉嫩高潮美女一区二区三区| 色综合手机在线| 亚洲天堂久久| 亚洲精品国产精品久久| 黄色成人美女网站| 国产原创欧美精品| 日韩三级影视| 欧美韩日一区二区| 中文字幕在线视频区| 日韩电影在线观看中文字幕| 国产精品人人妻人人爽| 91精品办公室少妇高潮对白| 久久免费视频播放| 亚洲欧洲国产日本综合| xxxx日本免费| 成人高清视频在线| 精品国产鲁一鲁一区二区三区| 久久蜜桃精品| av日韩一区二区三区| 忘忧草精品久久久久久久高清| 精品一区日韩成人| 国产欧美一区二区三区米奇| 成人黄色激情网| 日本在线中文字幕一区二区三区| 97视频在线免费观看| 二区在线播放| 日韩视频免费大全中文字幕| 九色蝌蚪在线| 亚洲精品网址在线观看| 午夜福利一区二区三区| 91麻豆精品国产91久久久| 中文字幕乱码人妻二区三区| 色婷婷狠狠综合| 在线能看的av| 欧美视频免费在线观看| 久久久国产高清| 午夜欧美大尺度福利影院在线看 | 中文精品久久| 色综合视频在线观看| 欧美日韩大尺度| 亚欧成人精品| jizzjizzxxxx| 久久久久久穴| 欧美成人黑人猛交| 久久婷婷丁香| 日本www高清视频| 日韩高清在线一区| 日本一二区免费| 久久99久久99精品免视看婷婷 | 日韩av最新在线| 香蕉久久一区二区三区| 日韩av在线网| 欧美成人免费| 亚洲性夜色噜噜噜7777| 丁香婷婷在线观看| 久久精品国产一区| a在线免费观看| 久久青草精品视频免费观看| 91禁在线看| 青草热久免费精品视频| 日韩电影免费观| 国产日韩在线一区| 三级欧美日韩| 国产一区免费| 精品国产中文字幕第一页| 亚洲一卡二卡三卡| 欧美激情91| 99热亚洲精品| 日日夜夜精品视频天天综合网| 亚洲免费一级视频| 国产精选一区二区三区| 中国极品少妇videossexhd| 91蜜桃网址入口| 亚洲欧美卡通动漫| 亚洲综合丁香婷婷六月香| 国产成人免费看| 欧美久久久一区| 不卡av中文字幕| 国产一二三精品| 国产日韩一区二区| av一区二区在线播放| av电影一区二区三区| 国产日韩一区二区三区在线| 黄色三级视频在线| 国产成人小视频| 成人黄色免费网址| 一区二区三区不卡视频| 国产婷婷色一区二区在线观看 | 久久久噜噜噜久久| 国产私拍福利精品视频二区| 91欧美精品午夜性色福利在线 | 久久99久久精品欧美| 日本一卡二卡在线| 中文字幕一区二区三区四区不卡| 中文字幕第28页| 欧美日韩国产高清一区二区| 亚洲精品久久久久久无码色欲四季| 亚洲日本欧美中文幕| 色婷婷在线播放| 国产精品久久久久久久7电影| 99这里只有精品视频| 亚洲免费不卡| 一本不卡影院| 日本女人黄色片| 国产日韩精品一区二区浪潮av| 免费在线视频观看| 欧美日韩精品一区二区三区四区 | 欧美激情一区二区三区| 中文字幕第28页| 欧美一卡二卡在线| 成a人v在线播放| 57pao成人永久免费视频| 中文字幕视频精品一区二区三区| 亚洲精品日韩在线观看| 一本色道精品久久一区二区三区 | 99久久99久久精品免费看蜜桃| 午夜国产小视频| 欧美日韩在线观看一区二区 | 老司机在线精品视频| 精品一区二区三区毛片| 青娱乐精品视频| 成人片黄网站色大片免费毛片| 亚洲大型综合色站| 亚洲黄色小说网| 久久国产精品免费视频| 国模私拍国内精品国内av| 日本三级中国三级99人妇网站| 国产亚洲一区在线| 国产chinese中国hdxxxx| 一个色综合av| 国产肥老妇视频| 久久久av网站| 国产精品视频一区视频二区| 色涩成人影视在线播放| 日韩av一级片| 国产精品国产三级国产专业不| 欧美色视频日本版| 日本又骚又刺激的视频在线观看| 久久全国免费视频| 乱亲女h秽乱长久久久| 久久国产亚洲精品无码| 99视频在线精品| 久热这里只有精品6| 日韩精品极品在线观看| 樱桃视频成人在线观看| 欧美男人的天堂| 人人超碰91尤物精品国产| 日本高清黄色片| 欧美日韩国产影片| 麻豆网站在线| 成人免费观看网站| 99在线|亚洲一区二区| 成人h动漫精品一区| 色素色在线综合| 中文字幕日本在线| 成人观看高清在线观看免费| 欧美成人69av| 50一60岁老妇女毛片| 黄色在线免费观看网站| 国产精品揄拍一区二区| 97视频精品| 熟妇女人妻丰满少妇中文字幕| 亚洲资源中文字幕| 亚洲av片一区二区三区| 国产精品久久久久久久久久免费 | 欧美精品在线观看| 99久久人爽人人添人人澡| 北条麻妃69av| 国产精品污网站| 精品国产亚洲一区二区麻豆| 午夜精品理论片| 成人无号精品一区二区三区| 日韩视频在线观看一区二区三区| 亚洲一区二区在线视频| 色哟哟在线观看| 成人av.网址在线网站| 亚洲福利专区| 国产1区2区在线观看| 日韩欧美亚洲国产精品字幕久久久| caoporn视频在线观看| 五月天亚洲综合| 大尺度一区二区| 毛片在线免费播放| 欧美黑人性猛交| 国产亚洲电影| 国产精品一区二区在线免费观看| 色综合久久中文综合久久97| 国产原创精品视频| 欧美黄色直播| 国产成人精品三级麻豆| 无码任你躁久久久久久久| 欧美成人免费在线视频| 免费看av成人| www.四虎精品| 欧美日韩视频在线观看一区二区三区|