圖解進程線程互斥鎖與信號量-看完不懂你來打我

      網友投稿 626 2022-05-29

      在上學的時候,老師講到進程與線程的時候可能是這樣講的:

      進程是一個具有一定獨立功能的程序在一個數據集上的一次動態執行的過程,是操作系統進行資源分配和調度的一個獨立單元,是應用程序運行的載體。

      線程是程序執行中一個單一的順序控制流程,是程序執行流的最小單元,是處理器調度和分派的基本單位。一個進程可以有一個或多個線程,各個線程之間共享程序的內存空間(也就是所在進程的內存空間)。

      那個時候為了考試我都背下來了,但是心里想說:what?這都是些什么東西? 下面讓我來試著用更通俗的語言來給你說說進程、線程、互斥鎖、信號量的那些事。

      一、房子與居住者

      圖解進程線程、互斥鎖與信號量-看完不懂你來打我

      我們可以將自己平時住的房子類比為一個進程,每一個房間及其占用者比喻為一個線程。房子本身并不會做任何的事情,但是線程是房子里面每一個活躍的人,他們平時洗衣、做飯、看電視……,就像線程執行自己的代碼一樣在運行著。

      單線程

      單線程就是一個叫做“進程”的房子里面,只住了你一個人,你可以在這個房子里面任何時間去做任何的事情。你是看電視、還是玩電腦,全都有你自己說的算。想干什么干什么,想什么時間做什么就什么時間做什么。

      多線程

      但是如果你處在一個“多人”的房子里面,每個房子里面都有叫做“線程”的住戶:線程1、線程2、線程3、線程4,情況就不得不發生變化了。假如這些線程是你的老婆、孩子、父母。

      父母老人午睡的時候你不能開音響

      老婆要看“甄嬛傳”,你就不能看球賽

      孩子沒睡覺,你就別想看書

      ……

      多線程出現這些問題的根本原因在于”共享資源“:時間、電視、廁所、廚房……等等。那我們下面來看看,如何處理協調使用這些"共享資源"?

      二、鎖(互斥鎖)

      在多線程編程中有”鎖”的概念,在你的房子里面也有鎖。如果你的老婆在上廁所并鎖上門,她就是在獨享這個“房子(進程)”里面的公共資源“衛生間”,如果你的家里只有這一個衛生間,你作為另外一個線程就只能先等待。

      線程對鎖的占用是有優先級的,就像在你的家里也有優先級。當你家只有一個衛生間的時候,孩子、老婆、你同時要去上廁所,通常來說 你的優先級是1,你老婆的優先級是100,你孩子的優先級是255。需要說明的是:數值越小優先級越低。但是不同的情況下會有不同的優先級調度算法,關鍵核心因子是優先級設置與等待時間,如果你確實等待了很長時間,老婆孩子可能看你快憋不住了,讓你先去使用洗手間也是可以的。

      三、信號量

      現在讓我們從衛生間走入廚房,首先我們要明確的一點是:廚房里面可以有一個人,也可以有多個人。

      那我們怎么控制使用“廚房”這個公共資源的人數(線程數)?一個比較好的方法就是使用信號量。

      “信號量”在編程術語中使用單詞semaphore,那什么是“信號量”?信號量就好比你家廚房入口架子上擺了三把鍋:

      如果你的孩子熱奶拿走一把,你的老婆熱湯拿走一把,你的媽媽做菜拿走一把,你想煮面條就沒有鍋了。當你看到這種情況,你就不會進入廚房了,也就說廚房按照“鍋的數量”作為信號量,只能容納三個人(線程)。

      當你的老婆熱完湯之后,把鍋重新放回架子上,你就可以去獲得一個鍋,你就可以進入廚房了。

      所以說:當信號量總數為1的時候,也就是你家只有一把鍋,此時信號量作用就等同于互斥鎖。

      四、專業點好么

      來一張專業點的圖,別讓您誤會我是講故事的。講技術,我可是認真的!

      任務調度

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

      上一篇:【愚公系列】2021年12月 二十三種設計模式(十一)-享元模式
      下一篇:Python編程:TinyDB庫MongoBD的簡易替代
      相關文章
      亚洲综合久久久久久中文字幕| 亚洲91av视频| 99999久久久久久亚洲| 亚洲一区二区三区高清| 国产亚洲真人做受在线观看| 亚洲日韩国产精品第一页一区| 中文字幕精品亚洲无线码一区| 久久久久久久亚洲精品| 亚洲免费视频一区二区三区| 婷婷综合缴情亚洲狠狠尤物| 国产AV无码专区亚洲AV琪琪| 亚洲 综合 国产 欧洲 丝袜 | 亚洲精品成人网久久久久久| 亚洲A∨精品一区二区三区下载 | 国产亚洲人成网站在线观看不卡| 久久久久无码专区亚洲av | 亚洲日本天堂在线| 亚洲国产精品无码久久98| 亚洲AV无码国产精品永久一区| 一本色道久久88综合亚洲精品高清| 国产亚洲精品欧洲在线观看| 亚洲国产精品无码久久青草| 久久夜色精品国产亚洲av| 亚洲精品高清国产一线久久| 亚洲精品私拍国产福利在线| 亚洲无砖砖区免费| 亚洲人成77777在线观看网| 亚洲heyzo专区无码综合| 亚洲av再在线观看| 亚洲熟妇中文字幕五十中出| 亚洲国产人成网站在线电影动漫 | 亚洲伊人久久大香线蕉| 亚洲最大中文字幕无码网站 | 女bbbbxxxx另类亚洲| 亚洲乱码国产一区网址| 亚洲国产成人片在线观看无码| 亚洲人成在线观看| 亚洲av无码片在线观看| 亚洲精品又粗又大又爽A片| 亚洲高清视频一视频二视频三| 亚洲香蕉网久久综合影视|