女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

守護進程到底有什么用?

冬至配餃子 ? 來源:多蘭多 ? 作者:Toranto ? 2022-08-19 10:08 ? 次閱讀

join控制子進程

我們通過例子來:

poYBAGL-7jqACAdvAACSUvGyuN4936.png
poYBAGL-7j-AFqEUAAEPKrHyKwE569.png

最后的10封郵件發送完畢我是想等所有子進程運行完畢再打印,但是從運行結果來看,這并沒有達到我們的預期,因為父進程和子進程是異步的。

聰明的小明問了:那我在最后的print語句之前讓程序休眠不就好了?

poYBAGL-7lOANaMbAAB3MyErDTs657.png

非常聰明,但是治標不治本,這樣做只是讓程序陷入了休眠狀態,但是并沒有從根本上解決異步的問題,它們還是異步,只是異步到了休眠。

這時我們可以用上join()方法:

pYYBAGL-7maAJ8JyAAB3D8lTdOY030.png

得到的運行結果:

pYYBAGL-7nuAJtA5AADxWryPyE0749.png

原理:

join()方法表示為給進程添加阻塞,也就是進程運行到這里就會停滯。再沒有用上join方法之前,for循環會同時創建這10個進程,但是用上了join方法之后,必須依次執行循環,因為第一次創建進程到了join()就會阻塞,直到第一次進程完成,join方法才會釋放阻塞,開始第二次循環,如此往復執行十次。

但是:

從根本上上來講,join方法幫我們把異步變成了同步,雖然可以更加有序,但是并沒有給我增加效率,異步的同時執行還是我們需要的,因為可以節省時間。而join方法將異步編程同步之后,反而拖累了工作效率。

當然,也有解決的辦法:

poYBAGL-7pyASMGfAAC2TL61T2E558.png
pYYBAGL-7qGAP9oqAAEXRneXcV4775.png

將進程全部添加到一個列表中,進程啟動的時候仍然是異步,只有結束時所有的阻塞都解除了,主程序才能執行。

守護進程

守護進程(daemon)是一類在后臺運行的特殊進程,是一個在后臺運行并且不受任何終端控制的進程。用于執行特定的系統任務。很多守護進程在系統引導的時候啟動,并且一直運行直到系統關閉。另一些只在需要的時候才啟動,完成任務后就自動結束。守護進程最重要的特性是后臺運行

poYBAGL-7sCAQJmbAAB8nocK6b4168.png
pYYBAGL-7saAIjCsAAB2y0osqM4488.png

換言之,守護進程會隨著主進程代碼的執行完畢而結束。

我們再看一段:

poYBAGL-7uKAYlqvAACzNh-gHk4389.png
pYYBAGL-7umAGiYeAACPjnkcbxc995.png

效果也是一樣的,只是多了一個func2,這里只有func1是守護進程。所以守護進程在主進程代碼執行完畢時就結束了,而func2不是守護進程,所以可以繼續運行。

可能有小明會很疑惑,守護進程到底有什么用?

守護進程其實可以作為程序的報活,每隔一段時間向一臺機器匯報自己的狀態,死了就不匯報了。(先這樣理解吧)

進程鎖-LOCK

Lock鎖,什么叫Lock鎖,我們還是通過一個直觀的例子來。

我們建一個json文件,來模擬搶票,是的,就是搶票:

建一個json文件

{'count':2} #表示余量為2

實現搶票

poYBAGL-7x2AWDAmAAChacQX_Yg769.pngpYYBAGL-7yKAORfTAACxyenhuUM559.pngpYYBAGL-7yaADjddAADJBLICmRU756.pngpYYBAGL-7yuAVdvUAACmPWvXJBg651.png

明明只有兩張票,卻都搶到了。。。。

pYYBAGL-7z6AD-bXAABbhiU0diM826.png

但我們仔細看,其實json文件中只修改了一次數據。因為這是一個異步程序,五個用戶同時打開并且讀取了json文件的內容,也就是說數據的修改是在外部的,而不是在json文件內,只要同時打開并讀取,那么一開始五個用戶讀取到的內容都是一樣的{'count':2},五個用戶又都在外面對數據進行修改,修改完了再保存回去,也就是五個人保存的數據都是{'count':1},發生了覆蓋現象,當涉及數據的修改時,異步其實很不安全。

所以我們可以采用加鎖(互斥鎖,這里是進程的互斥鎖,線程也有鎖)的方法。互斥鎖是一種簡單的加鎖的方法來控制對共享資源的訪問,互斥鎖只有兩種狀態,即上鎖( lock )和解鎖( unlock )。原理為:


pYYBAGL-71eAbbKOAACO06DpzQA276.png

沒有上鎖的時候,用戶可以一起涌入數據文件,對數據文件內的信息進行修改。但是當上鎖之后,訪問數據文件就只有一個通道了,雖然大家都是同時發起訪問的,但是進入數據文件的的用戶只能有一個,然后等這個用戶修改完了退出文件之后,通道才會開放給其他用戶。程序還是異步的,只是在數據修改環節限制了流量。

poYBAGL-736AEsklAAD_bIXGE0U441.pngpYYBAGL-74SAHRUjAAAs_GeNkL8216.pngpoYBAGL-74qAEnGvAAC5qxgLLF8877.png

這就使得異步的程序達到了同步的效果。

信號量-Semaphore

互斥鎖(Lock)同時只允許一個進程修改數據,而信號量(Semaphore)則允許多個人同時修改數據。互斥鎖就相當于你家的衛生間,只有一個坑位,同時只能一個人上廁所;而信號量則相當于公共廁所,有多個坑位,可以多個人同時上廁所。比如現在有10個人需要上廁所,現在公共廁所只有3個坑位,這時候就先有3個人上廁所,等其中一個或者多個人出來之后,另外的人才能進去。

Semaphore管理一個內置的計數器,每當調用acquire()時內置計數器-1;調用release() 時內置計數器+1;計數器不能小于0;當計數器為0時,acquire()將阻塞進程直到其他進程調用release()


poYBAGL-77aARlwSAABymSLloag994.pngpYYBAGL-77qAUELwAACtpsdS0Hk471.pngpYYBAGL-78CAUXYgAAD2Aan4Mi0609.png

事件-Event

再來一個紅燈停綠燈行:

poYBAGL-7_eAFEPqAAD97EFQVsg772.png
poYBAGL-7_yAbrpPAACcz1F9dsU895.png
poYBAGL-8A2AQQsGAAHLEY-82uw748.png




審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 計數器
    +關注

    關注

    32

    文章

    2284

    瀏覽量

    96025
  • Lock
    +關注

    關注

    0

    文章

    11

    瀏覽量

    7873
  • 進程
    +關注

    關注

    0

    文章

    206

    瀏覽量

    14211
  • 信號量
    +關注

    關注

    0

    文章

    53

    瀏覽量

    8499
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    24位或者說高分辨率的AD到底有什么用呢?

    的AD,如24位的AD,其分辨率達到很低的uV級別,我們如何考究其精度?而且AD的精度受到諸多因素的影響,其中參考源的穩定度和供電電源的穩定度對精度影響很大,參考源最低0.05%的精度,那么24位的分辨率所可以達到的精度卻是要大打折扣的,請問在這樣的情況下,24位或者說高分辨率的AD到底有
    發表于 01-07 06:49

    進程監視器什么用,怎么調用

    進程監視器什么用,怎么調用
    發表于 03-13 16:10

    Linux守護進程

    在系統引導載入時啟動,在系統關閉時終止。Linux很多系統服務,大多數服務都是通過守護進程實現的。同時,守護進程還能完成許多系統任務,例如
    發表于 08-22 09:17

    反碼位是什么?到底有什么用

    反碼位是什么?到底有什么用
    發表于 05-07 07:16

    64-Kbit FRAM是什么?64-Kbit FRAM到底有什么用途?

    64-Kbit FRAM是什么?為什么要開發一種64-Kbit FRAM?64-Kbit FRAM到底有什么用途?
    發表于 06-17 08:27

    筆記本固態硬盤到底有什么用

    如果現在您去購買電腦會發現很多筆記本是會帶有固態硬盤的,及時很多人購買的時候需要性能高的也會給主機加上固態硬盤,為什么很多人喜歡加上固態硬盤呢?筆記本固態硬盤到底有什么用呢?我們一起來了解一下。首先
    發表于 09-08 07:22

    模擬看門狗到底有什么用處呢

    到底什么是模擬看門狗呢?模擬看門狗到底有什么用處呢?
    發表于 01-17 07:33

    異常處理向量表的設置中DCD這些偽指令到底有什么用

    在異常處理向量表的設置中,為什么不直接將異常向量的入口地址寫入 PC 中呢,為什么非要用什么 DCD 這些偽指令,到底有什么用
    發表于 02-28 14:53

    Linux守護進程詳解

    較長的進程,通常獨立于控制終端并且周期性地執行某種任務或等待處理某些發生的事件。守護進程常常在系統引導載入時啟動,在系統關閉時終止。Linux很多系統服務,大多數服務都是通過
    發表于 10-18 14:24 ?0次下載
    Linux<b class='flag-5'>守護</b><b class='flag-5'>進程</b>詳解

    數據可視化到底有什么用

    數據可視化到底有什么用呢?數據可視化是當下火熱的大數據應用技術,很多新銳地大數據分析工具都注重開發數據可視化的功能模塊。數據可視化及其技術研究和應用開發,已經從根本上改變了我們對數據和數據分析工具的理解,數據可視化對大數據發展的影響廣泛而深入。
    的頭像 發表于 02-05 14:03 ?2.6w次閱讀

    工業互聯網, 你到底有

    工業互聯網,你到底有
    的頭像 發表于 03-01 12:32 ?3664次閱讀
    工業互聯網, 你<b class='flag-5'>到底有</b>啥<b class='flag-5'>用</b>?

    NFC是什么NFC到底有什么用

    如今,手機變得越來越強大,功能也是越來越豐富,近兩年出來一個新的功能很有趣,叫NFC。很多人不知道這個NFC是什么,什么用
    的頭像 發表于 02-04 15:16 ?14.8w次閱讀

    log2在verilog中到底有什么用

    編譯成電路,所以有這種想法情理之中,畢竟花大把時間去玩一個函數發現他局限性很大那確實收益太少。 那么他到底有什么用? 如果大家要設計一個深度1024的fifo,那么地址位寬取多大合適?*╭?( ˙o˙)╯?* 當然是10位,log2(1024) 所以可以如下
    的頭像 發表于 10-08 11:23 ?5006次閱讀
    log2在verilog中<b class='flag-5'>到底有</b><b class='flag-5'>什么用</b>

    npu是什么意思?npu芯片是什么意思?npu到底有什么用

    npu是什么意思?npu芯片是什么意思?npu到底有什么用?? NPU的概念 NPU(Neural Processing Unit,神經網絡處理器)是一種專門用于處理人工神經網絡計算的計算機微處理器
    的頭像 發表于 08-27 17:03 ?4.5w次閱讀

    IPv6到底有什么用,給我們生活帶來哪些變化?

    IPv6是下一代互聯網協議,與IPv4相比,具有更多的地址空間和更好的性能。隨著互聯網的普及和發展,IPv6的用途也越來越廣泛,已經在生活中發揮了重要作用。那IPv6到底有什么用,給我們生活帶來
    的頭像 發表于 03-29 14:00 ?1905次閱讀
    IPv6<b class='flag-5'>到底有</b><b class='flag-5'>什么用</b>,給我們生活帶來哪些變化?