色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

守護(hù)進(jìn)程到底有什么用?

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

join控制子進(jìn)程

我們通過例子來:

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

最后的10封郵件發(fā)送完畢我是想等所有子進(jìn)程運(yùn)行完畢再打印,但是從運(yùn)行結(jié)果來看,這并沒有達(dá)到我們的預(yù)期,因?yàn)楦高M(jìn)程和子進(jìn)程是異步的。

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

poYBAGL-7lOANaMbAAB3MyErDTs657.png

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

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

pYYBAGL-7maAJ8JyAAB3D8lTdOY030.png

得到的運(yùn)行結(jié)果:

pYYBAGL-7nuAJtA5AADxWryPyE0749.png

原理:

join()方法表示為給進(jìn)程添加阻塞,也就是進(jìn)程運(yùn)行到這里就會停滯。再沒有用上join方法之前,for循環(huán)會同時(shí)創(chuàng)建這10個(gè)進(jìn)程,但是用上了join方法之后,必須依次執(zhí)行循環(huán),因?yàn)榈谝淮蝿?chuàng)建進(jìn)程到了join()就會阻塞,直到第一次進(jìn)程完成,join方法才會釋放阻塞,開始第二次循環(huán),如此往復(fù)執(zhí)行十次。

但是:

從根本上上來講,join方法幫我們把異步變成了同步,雖然可以更加有序,但是并沒有給我增加效率,異步的同時(shí)執(zhí)行還是我們需要的,因?yàn)榭梢怨?jié)省時(shí)間。而join方法將異步編程同步之后,反而拖累了工作效率。

當(dāng)然,也有解決的辦法:

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

將進(jìn)程全部添加到一個(gè)列表中,進(jìn)程啟動的時(shí)候仍然是異步,只有結(jié)束時(shí)所有的阻塞都解除了,主程序才能執(zhí)行。

守護(hù)進(jìn)程

守護(hù)進(jìn)程(daemon)是一類在后臺運(yùn)行的特殊進(jìn)程,是一個(gè)在后臺運(yùn)行并且不受任何終端控制的進(jìn)程。用于執(zhí)行特定的系統(tǒng)任務(wù)。很多守護(hù)進(jìn)程在系統(tǒng)引導(dǎo)的時(shí)候啟動,并且一直運(yùn)行直到系統(tǒng)關(guān)閉。另一些只在需要的時(shí)候才啟動,完成任務(wù)后就自動結(jié)束。守護(hù)進(jìn)程最重要的特性是后臺運(yùn)行

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

換言之,守護(hù)進(jìn)程會隨著主進(jìn)程代碼的執(zhí)行完畢而結(jié)束。

我們再看一段:

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

效果也是一樣的,只是多了一個(gè)func2,這里只有func1是守護(hù)進(jìn)程。所以守護(hù)進(jìn)程在主進(jìn)程代碼執(zhí)行完畢時(shí)就結(jié)束了,而func2不是守護(hù)進(jìn)程,所以可以繼續(xù)運(yùn)行。

可能有小明會很疑惑,守護(hù)進(jìn)程到底有什么用?

守護(hù)進(jìn)程其實(shí)可以作為程序的報(bào)活,每隔一段時(shí)間向一臺機(jī)器匯報(bào)自己的狀態(tài),死了就不匯報(bào)了。(先這樣理解吧)

進(jìn)程鎖-LOCK

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

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

建一個(gè)json文件

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

實(shí)現(xiàn)搶票

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

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

pYYBAGL-7z6AD-bXAABbhiU0diM826.png

但我們仔細(xì)看,其實(shí)json文件中只修改了一次數(shù)據(jù)。因?yàn)檫@是一個(gè)異步程序,五個(gè)用戶同時(shí)打開并且讀取了json文件的內(nèi)容,也就是說數(shù)據(jù)的修改是在外部的,而不是在json文件內(nèi),只要同時(shí)打開并讀取,那么一開始五個(gè)用戶讀取到的內(nèi)容都是一樣的{'count':2},五個(gè)用戶又都在外面對數(shù)據(jù)進(jìn)行修改,修改完了再保存回去,也就是五個(gè)人保存的數(shù)據(jù)都是{'count':1},發(fā)生了覆蓋現(xiàn)象,當(dāng)涉及數(shù)據(jù)的修改時(shí),異步其實(shí)很不安全。

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


pYYBAGL-71eAbbKOAACO06DpzQA276.png

沒有上鎖的時(shí)候,用戶可以一起涌入數(shù)據(jù)文件,對數(shù)據(jù)文件內(nèi)的信息進(jìn)行修改。但是當(dāng)上鎖之后,訪問數(shù)據(jù)文件就只有一個(gè)通道了,雖然大家都是同時(shí)發(fā)起訪問的,但是進(jìn)入數(shù)據(jù)文件的的用戶只能有一個(gè),然后等這個(gè)用戶修改完了退出文件之后,通道才會開放給其他用戶。程序還是異步的,只是在數(shù)據(jù)修改環(huán)節(jié)限制了流量。

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

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

信號量-Semaphore

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

Semaphore管理一個(gè)內(nèi)置的計(jì)數(shù)器,每當(dāng)調(diào)用acquire()時(shí)內(nèi)置計(jì)數(shù)器-1;調(diào)用release() 時(shí)內(nèi)置計(jì)數(shù)器+1;計(jì)數(shù)器不能小于0;當(dāng)計(jì)數(shù)器為0時(shí),acquire()將阻塞進(jìn)程直到其他進(jìn)程調(diào)用release()


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

事件-Event

再來一個(gè)紅燈停綠燈行:

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




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 計(jì)數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2256

    瀏覽量

    94719
  • Lock
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    7776
  • 進(jìn)程
    +關(guān)注

    關(guān)注

    0

    文章

    203

    瀏覽量

    13965
  • 信號量
    +關(guān)注

    關(guān)注

    0

    文章

    53

    瀏覽量

    8358
收藏 人收藏

    評論

    相關(guān)推薦

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

    的AD,如24位的AD,其分辨率達(dá)到很低的uV級別,我們?nèi)绾慰季科渚龋慷褹D的精度受到諸多因素的影響,其中參考源的穩(wěn)定度和供電電源的穩(wěn)定度對精度影響很大,參考源最低0.05%的精度,那么24位的分辨率所可以達(dá)到的精度卻是要大打折扣的,請問在這樣的情況下,24位或者說高分辨率的AD到底有
    發(fā)表于 01-07 06:49

    進(jìn)程監(jiān)視器什么用,怎么調(diào)用

    進(jìn)程監(jiān)視器什么用,怎么調(diào)用
    發(fā)表于 03-13 16:10

    Linux守護(hù)進(jìn)程

    在系統(tǒng)引導(dǎo)載入時(shí)啟動,在系統(tǒng)關(guān)閉時(shí)終止。Linux很多系統(tǒng)服務(wù),大多數(shù)服務(wù)都是通過守護(hù)進(jìn)程實(shí)現(xiàn)的。同時(shí),守護(hù)進(jìn)程還能完成許多系統(tǒng)任務(wù),例如
    發(fā)表于 08-22 09:17

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

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

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

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

    筆記本固態(tài)硬盤到底有什么用

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

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

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

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

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

    Linux守護(hù)進(jìn)程詳解

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

    數(shù)據(jù)可視化到底有什么用

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

    工業(yè)互聯(lián)網(wǎng), 你到底有

    工業(yè)互聯(lián)網(wǎng),你到底有
    的頭像 發(fā)表于 03-01 12:32 ?3424次閱讀
    工業(yè)互聯(lián)網(wǎng), 你<b class='flag-5'>到底有</b>啥<b class='flag-5'>用</b>?

    NFC是什么NFC到底有什么用

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

    log2在verilog中到底有什么用

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

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

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

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

    IPv6是下一代互聯(lián)網(wǎng)協(xié)議,與IPv4相比,具有更多的地址空間和更好的性能。隨著互聯(lián)網(wǎng)的普及和發(fā)展,IPv6的用途也越來越廣泛,已經(jīng)在生活中發(fā)揮了重要作用。那IPv6到底有什么用,給我們生活帶來
    的頭像 發(fā)表于 03-29 14:00 ?1379次閱讀
    IPv6<b class='flag-5'>到底有</b><b class='flag-5'>什么用</b>,給我們生活帶來哪些變化?
    主站蜘蛛池模板: 精子网久久国产精品| 91成品视频| 最新国产三级在线不卡视频| 国产又湿又黄又硬又刺激视频| 免费在线观看国产| 中文无码热在线视频| 久久99精品涩AV毛片观看| 亚洲精品无AMM毛片| 国内精品视频在线播放一区 | 亚洲人成色777777老人头| 亚洲中文字幕乱倫在线| 国产在线精品一区二区网站免费| 无码国产色欲XXXX视频| 国产精品久久免费视频| 四虎国产精品免费观看视频 | 韩日美无码精品无码| 欧美乱子YELLOWVIDEO| adc年龄确认大驾光临入口| 奶头被客人吸得又红又肿| oldgrand欧洲老妇人| 日韩人妻双飞无码精品久久| 国产盗摄一区二区三区| 亚欧洲乱码视频一二三区| 寂寞少妇直播| 69丰满少妇AV无码区| 国产免费变态视频网址网站| 性生大片免费看| 被黑人掹躁10次高潮| 手机毛片免费看| 国产在线视频分类精品| 尤物国产在线精品三区| 蜜臀AV精品一区二区三区| 啊灬啊别停灬用力啊在线观看视频 | 日韩欧美一区二区三区免费看| 国产高清精品自在久久| 亚洲欧美日韩一级特黄在线| 久久视热频国产这里只有精品23| 99无码熟妇丰满人妻啪啪| 色婷婷激婷婷深爱五月小蛇| 好男人WWW免费高清视频在线| 2020美女视频黄频大全视频|