并發(fā)編程臨界區(qū)\阻塞\非阻塞\死鎖\饑餓\活鎖

      網友投稿 815 2022-05-30

      本文介紹并發(fā)編程中的若干概念,實際上在筆者之前的文章中,已經介紹過很多概念。比如:并發(fā)與并行、同步與異步、鎖與信號量等等。參考《并發(fā)編程專欄》,本文繼續(xù)介紹一些相對深入一些的概念

      一、臨界區(qū)

      為了方便大家理解,我們先看下面的這樣一張圖,我們可以把房子看作一個進程,每個房子里面的住戶及其活動看作一個線程,飲水機、健身器材、廁所都屬于共享資源。這里的共享資源實際就是臨界區(qū)的概念,臨界區(qū)的資源在同一時間只能被一個線程(住戶)使用,所以一旦臨界資源被占用,其他的線程(住戶)能做的就只有等待。

      比如,在一個出租房內,住戶A占用了廁所,在他使用廁所的這段時間內廁所這個資源就是他獨占的。如果住戶B此時也想上廁所,就只能等待住戶A上完廁所之后才可以繼續(xù)使用該資源。

      并發(fā)編程之臨界區(qū)\阻塞\非阻塞\死鎖\饑餓\活鎖

      二、阻塞和非阻塞

      了解了臨界區(qū)的概念之后,阻塞概念就好理解了。一個線程先占用了臨界區(qū)的資源,此時如果其他的線程想使用臨界區(qū)資源就必須等待。這種占用臨界區(qū)資源,阻塞其他線程繼續(xù)執(zhí)行的情況就是線程阻塞(Blocking)。

      然而說到非阻塞,一般說的就是是否對當前線程自己產生阻塞,比如:

      我執(zhí)行一個任務,比如使用飲水機接水。我拿了一個杯子接水,而我必須在飲水機前面等著水接完,這種就是阻塞式線程。

      如果我拿了杯子接水,把杯子放到飲水機下面,智能飲水機會在杯子接滿水之后,自動對我發(fā)出異步通知(比如聲音告警)。我可以在此期間做其他的事情,這種就是非阻塞式線程(Non-Blocking)。非阻塞式線程,從編程的角度一般都是通過回調函數,或者響應式編程(Reactive programming)實現的。

      三、死鎖、饑餓和活鎖

      死鎖:我們來看上面的這張圖,在十字路口A車道的A1車向轉向B車道,但B車道入口被B1車占用;在十字路口B車道的B1車想轉向C車道,但C車道入口被C1車占用;在十字路口C車道的C1車想轉向D車道,但D車道入口被D1車占用;在十字路口D車道的D1車想轉向A車道,但A車道入口被A1車占用;也就是說:線程因為資源競爭,彼此需要資源又都無法釋放,導致線程無法獲取下一步執(zhí)行所需的資源,導致死鎖產生。

      饑餓:舉個例子農民給小雞喂食,如果有五只雞每次都剛好給五只雞的飼料量。無法避免的是有的雞吃的量超過規(guī)劃量,最終導致某一只雞無法吃到足夠的飼料。由于它無法吃到足夠的飼料,它就比較瘦弱,搶食的能力弱。惡性循環(huán),最終很可能被餓死。具體到編程層面,就是某一線程A的優(yōu)先級比較低,然后優(yōu)先級高的線程又經常占用資源不釋放,線程A長期無法得到有效執(zhí)行,處于饑餓狀態(tài)。極端情況下,可能被餓死。

      活鎖:相對于"死鎖"和"饑餓",活鎖是一種相對好的狀態(tài)。大家在生活中肯定遇到過這樣一種情況,你在樓梯拐角遇到一個同事,空間有限所以二人卡住了。你向左移動,你的同事也向左移動;你向右移動,你的同事也向右移動;所以你們兩個人都無法向前移動,這就是一個典型的活鎖。因為人是高智慧的動物,又都懂得禮讓,所以對于人來說"活鎖"的問題很好解決,只要其中一個人原地不動,另一個人動一下就過去了。但是多線程面對活鎖的時候就沒有那么智能了,有可能出現不斷地釋放資源(向左移)、占用資源(向右移)的循環(huán)中,即使最終活鎖被解開,其資源開銷及時間成本都是很大的。

      任務調度

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Java面試題總結之JDBC 和Hibernate
      下一篇:Java學習筆記
      相關文章
      久久亚洲AV成人无码软件 | 亚洲午夜在线一区| 亚洲精品国产精品乱码视色 | 亚洲AV无码码潮喷在线观看 | 中文字幕在亚洲第一在线 | 亚洲天堂中文字幕在线| 国产亚洲精品美女2020久久| 亚洲国产精品自在自线观看| 亚洲人成电影网站免费| 亚洲中文字幕久久无码| 亚洲欧洲无码一区二区三区| 亚洲精品V天堂中文字幕| 亚洲高清一区二区三区电影| 亚洲youwu永久无码精品 | 国产av无码专区亚洲av桃花庵| 亚洲精品成人无限看| 国产亚洲精品资源在线26u| 亚洲国产日韩在线视频| 亚洲国产精品一区二区久久hs | 亚洲色图激情文学| 亚洲日韩国产一区二区三区在线| 国产精品亚洲一区二区麻豆| 亚洲欧美国产精品专区久久| 亚洲AV无码一区二区一二区| va亚洲va日韩不卡在线观看| 亚洲片国产一区一级在线观看| 亚洲性久久久影院| 亚洲日韩中文字幕在线播放| 亚洲av永久无码精品漫画| 内射干少妇亚洲69XXX| 亚洲av无码不卡久久| 亚洲真人无码永久在线观看| 精品亚洲国产成人av| 亚洲精品一级无码中文字幕| 亚洲人成在线播放网站| 亚洲精品国产成人专区| 亚洲国产中文在线二区三区免| 亚洲人成未满十八禁网站| 亚洲精品97久久中文字幕无码| 亚洲日韩精品一区二区三区| 亚洲一区精品中文字幕|