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

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

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

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

淺析線程的信號(hào)量和進(jìn)程的信號(hào)量用法

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

信號(hào)量-Semaphore

線程的信號(hào)量和進(jìn)程的信號(hào)量用法無異:

pYYBAGL--g-AO_BzAACWToGWcWQ982.png
poYBAGL--hSAaxxiAADdZ2xDWhs986.png

事件-Event

通過event類將兩個(gè)方法連接起來進(jìn)行溝通:

poYBAGL--jOAT8DWAADQVZsrcs0599.pngpYYBAGL--jmAJUpxAADOSHuAf9I332.png

線程池-ThreadPoolExecutor

線程池和進(jìn)程池用法是幾乎無異的,但是要注意它導(dǎo)入的模塊,提交的方法,參數(shù)的填寫方法,以及關(guān)閉的方法:

pYYBAGL--lmAcSNWAACp_ffExrU976.pngpoYBAGL--l6Ab_5iAAEkdhtQ5c4710.png

如果涉及返回值的時(shí)候呢?

直接打印的話會(huì)打印出一串內(nèi)存地址(自己嘗試)這時(shí)候需要調(diào)用.result方法(第14行)

poYBAGL--nqAErMQAAC6VzwrZFc462.pngpYYBAGL--n-AcAkrAACY2TFzDTY877.png

但是我們從結(jié)果上看,程序變成了一個(gè)同步程序,大大降低了我們的效率。這時(shí)候我們可以采用新建列表的方式來進(jìn)行優(yōu)化:

pYYBAGL--pyATtBsAADiP20ScmM706.pngpoYBAGL--qKAJrIvAAC_Qt_Jq94780.png

協(xié)程-greenlet

我們都知道:

①進(jìn)程是計(jì)算機(jī)中最小的資源分配單位·

②線程是計(jì)算機(jī)中能被cpu調(diào)度的最小單位

現(xiàn)在有一個(gè)問題:能開啟的線程和進(jìn)程是有限的,但是我們要處理的任務(wù)是無限的。比如我現(xiàn)在有5萬個(gè)任務(wù)要執(zhí)行,難道我去開5萬個(gè)線程嗎?然后假設(shè)我開了300個(gè)線程,但是這300個(gè)線程都阻塞了,我仍然沒有充分利用CPU,(理想的情況是開啟一個(gè)線程,沒有IO只有計(jì)算,這叫充分利用CPU,但大多數(shù)的情況不是這樣的,多多少少會(huì)有一些阻塞情況),這時(shí)候協(xié)程(纖程)就派上用場(chǎng)了。一條線程在多個(gè)任務(wù)之間來回切換,切換這個(gè)動(dòng)作是需要浪費(fèi)時(shí)間的,但是對(duì)于CPU、操作系統(tǒng)來說,協(xié)程是不存在的,它們只能看見最小單位即線程。把一個(gè)線程的工作分成了好幾個(gè)任務(wù),在多個(gè)任務(wù)中來回切換的現(xiàn)象稱為協(xié)程。

pYYBAGL--ryATGHIAABArqsJgks044.png

寫一個(gè)簡(jiǎn)單地生產(chǎn)者消費(fèi)者模型:

poYBAGL--syAbqrPAABXjKwQRKQ878.png

①協(xié)程能把一個(gè)線程的執(zhí)行明確的區(qū)分開

②兩個(gè)任務(wù),協(xié)程幫助我記住哪個(gè)任務(wù)執(zhí)行到哪個(gè)位置上了,并且實(shí)現(xiàn)安全的切換

③一個(gè)任務(wù)不得不陷入阻塞了,在這個(gè)任務(wù)阻塞的過程中切換到另一個(gè)任務(wù)繼續(xù)執(zhí)行

④你的程序只要還有任務(wù)需要執(zhí)行你的當(dāng)前線程永遠(yuǎn)不會(huì)阻塞

⑤利用協(xié)程在多個(gè)任務(wù)陷入阻塞的時(shí)候進(jìn)行切換,來保證一個(gè)線程在處理多個(gè)任務(wù)的時(shí)候總是在忙碌

⑥能夠更加充分的利用cpu,搶占更多的時(shí)間片

⑦無論是進(jìn)程還是線程都是由操作系統(tǒng)來切換的,開啟過多的線程、進(jìn)程會(huì)給操作系統(tǒng)的調(diào)度增加負(fù)擔(dān)

⑧如果我們是使用的協(xié)程,協(xié)程在程序之間的切換操作系統(tǒng)感知不到

⑨無論開啟多少個(gè)協(xié)程對(duì)操作系統(tǒng)來說總是一個(gè)線程在執(zhí)行,操作系統(tǒng)的調(diào)度不會(huì)有任務(wù)的壓力

⑩協(xié)程的本質(zhì)就是一條線程,所以完全不會(huì)產(chǎn)生數(shù)據(jù)安全的問題。

對(duì)于協(xié)程所需要用到的模塊主要有兩個(gè),greenlet和gevent,其中g(shù)reenlet是gevent的底層邏輯模塊,主要控制協(xié)程的切換(手動(dòng)),gevent可以當(dāng)做是greenlet的升級(jí)版,功能比greenlet更加全面,需要安裝,安裝后即可直接使用。

poYBAGL--vOAZ4vwAACPSqJkLSc706.png

pYYBAGL--vmAG9b7AACnPY5Q7bc444.png

可以看出,greenlet.switch可以幫助程序員手動(dòng)切換阻塞,但是如果想要自動(dòng)切換還需要用到gevent。

協(xié)程-gevent

gevent就是greenlet的完善版:

pYYBAGL--xiAKwhCAAB7_oR4tOc581.png

pYYBAGL--xyAS3_XAAFuvRBCWD8583.png

但是我們?nèi)绻裧event.sleep換成time.sleep呢?

pYYBAGL--0GAIE9bAAB_-F9bTi0348.png

poYBAGL--0aAQKthAAFmgOCzaOQ262.png

很明顯,阻塞沒有被識(shí)別到,所以我們需要用到導(dǎo)入monkey,這樣就能將一些常見的阻塞識(shí)別。

poYBAGL--2yARDGdAACiydKdiiA635.png

pYYBAGL--3OAHC2bAAFtL0x2oYk432.png




審核編輯:劉清




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

    關(guān)注

    0

    文章

    57

    瀏覽量

    6856
  • 線程
    +關(guān)注

    關(guān)注

    0

    文章

    505

    瀏覽量

    19700
  • 信號(hào)量
    +關(guān)注

    關(guān)注

    0

    文章

    53

    瀏覽量

    8351
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux下進(jìn)程通訊之信號(hào)量

    ?信號(hào)量集,就是由多個(gè)信號(hào)量組成的一個(gè)數(shù)組。 作為一個(gè)整體, 信號(hào)量集中所有的信號(hào)量使用同一個(gè)等待隊(duì)列。 Linux 的信號(hào)量集為
    的頭像 發(fā)表于 08-19 19:55 ?2057次閱讀
    Linux下<b class='flag-5'>進(jìn)程</b>通訊之<b class='flag-5'>信號(hào)量</b>集

    FreeRTOS信號(hào)量使用教程

    信號(hào)量是操作系統(tǒng)中重要的一部分,信號(hào)量一般用來進(jìn)行資源管理和任務(wù)同步, FreeRTOS中信號(hào)量又分為二值信號(hào)量、 計(jì)數(shù)型信號(hào)量、互斥
    的頭像 發(fā)表于 12-19 09:22 ?3230次閱讀
    FreeRTOS<b class='flag-5'>信號(hào)量</b>使用教程

    信號(hào)量用法

    本帖最后由 chenshuihong 于 2016-4-22 11:28 編輯 信號(hào)量的分配,信號(hào)量的分配,信號(hào)量的分配,信號(hào)量的分配
    發(fā)表于 04-22 11:27

    LabVIEW信號(hào)量

    LabVIEW信號(hào)量信號(hào)量是一種用來限制可以同時(shí)取用共享(受保護(hù))資源的任務(wù)數(shù)量方法。受保護(hù)的資源或關(guān)鍵代碼部分可能包括寫入全局變量或與外部?jī)x器進(jìn)行通信。您可以使用信號(hào)量使您的代碼線程
    發(fā)表于 04-09 21:52

    信號(hào)量機(jī)制怎么理解

    信號(hào)量(Semaphore),有時(shí)被稱為信號(hào)燈,是在多線程環(huán)境下使用的一種設(shè)施,是可以用來保證兩個(gè)或多個(gè)關(guān)鍵代碼段不被并發(fā)調(diào)用。在進(jìn)入一個(gè)關(guān)鍵代碼段之前,線程必須獲取一個(gè)
    發(fā)表于 11-14 09:23 ?2.6w次閱讀
    <b class='flag-5'>信號(hào)量</b>機(jī)制怎么理解

    你了解Linux 各類信號(hào)量

    內(nèi)核信號(hào)量與用戶信號(hào)量,用戶信號(hào)量分為POXIS信號(hào)量和SYSTEMV信號(hào)量,POXIS信號(hào)量
    發(fā)表于 05-04 17:19 ?2519次閱讀
    你了解Linux 各類<b class='flag-5'>信號(hào)量</b>?

    信號(hào)量和自旋鎖

    ------------------------------------------------------??? Linux中的信號(hào)量是一種睡眠鎖。如果有一個(gè)任務(wù)試圖獲得一個(gè)已被持有的信號(hào)量時(shí),信號(hào)量會(huì)將其推入等待隊(duì)列,然后讓
    發(fā)表于 04-02 14:43 ?809次閱讀

    Linux IPC System V 信號(hào)量

    ?立即銷毀指定的信號(hào)量集,調(diào)用的進(jìn)程的的effective UID必須和信號(hào)量集的創(chuàng)建者或所有者相匹配,或者這個(gè)進(jìn)程有足夠的特權(quán)級(jí)別,此時(shí)第四個(gè)參數(shù)會(huì)被忽略IPC_INFO(Linux
    發(fā)表于 04-02 14:46 ?331次閱讀

    Linux 多線程信號(hào)量同步

    直到系統(tǒng)將資源分配給該進(jìn)程(進(jìn)入等待隊(duì)列,一直等到資源輪到該進(jìn)程)。V操作:如果在該信號(hào)量的等待隊(duì)列中有進(jìn)程在等待資源,則喚醒一個(gè)阻塞進(jìn)程;
    發(fā)表于 04-02 14:47 ?400次閱讀

    Linux信號(hào)量(2):POSIX 信號(hào)量

    上一章,講述了 SYSTEM V 信號(hào)量,主要運(yùn)行于進(jìn)程之間,本章主要介紹 POSIX 信號(hào)量:有名信號(hào)量、無名信號(hào)量。 POSIX
    的頭像 發(fā)表于 10-29 17:34 ?721次閱讀

    ThreadX(六)------信號(hào)量semaphore

    信號(hào)量semphere概述
    發(fā)表于 12-28 19:26 ?7次下載
    ThreadX(六)------<b class='flag-5'>信號(hào)量</b>semaphore

    使用二進(jìn)制信號(hào)量取代任務(wù)通知

    二進(jìn)制信號(hào)量只有0和1,兩個(gè)任務(wù)公用一個(gè)信號(hào)量,一個(gè)任務(wù)用于產(chǎn)生信號(hào)量(即對(duì)信號(hào)量+1),另一個(gè)任務(wù)使用此信號(hào)量(即對(duì)
    的頭像 發(fā)表于 09-15 09:22 ?878次閱讀

    FreeRTOS的二值信號(hào)量

    FreeRTOS中的信號(hào)量是一種任務(wù)間通信的方式,信號(hào)量包括:二值信號(hào)量、互斥信號(hào)量、計(jì)數(shù)信號(hào)量,本次實(shí)驗(yàn)只使用二值
    的頭像 發(fā)表于 02-10 15:07 ?1518次閱讀

    Free RTOS的計(jì)數(shù)型信號(hào)量

    上篇講解了二值信號(hào)量,二值信號(hào)量只能判斷有無,而不能確定事件發(fā)生的次數(shù),因此我們?yōu)榱舜_定事件的次數(shù)引入了計(jì)數(shù)型信號(hào)量
    的頭像 發(fā)表于 02-10 15:29 ?1040次閱讀
    Free RTOS的計(jì)數(shù)型<b class='flag-5'>信號(hào)量</b>

    使用Linux信號(hào)量實(shí)現(xiàn)互斥點(diǎn)燈

    信號(hào)量常用于控制對(duì)共享資源的訪問,有計(jì)數(shù)型信號(hào)量和二值信號(hào)量之分。初始化時(shí)信號(hào)量值大于1的,就是計(jì)數(shù)型信號(hào)量,計(jì)數(shù)型
    的頭像 發(fā)表于 04-13 15:12 ?815次閱讀
    使用Linux<b class='flag-5'>信號(hào)量</b>實(shí)現(xiàn)互斥點(diǎn)燈
    主站蜘蛛池模板: 日韩少妇爆乳无码专区| 亚洲日韩中文字幕日本有码| 免费看国产精品麻豆| 免费成人高清在线视频| 美女屁股软件| 飘雪在线观看免费完整版| 日韩无码在线| 无码一卡二卡三卡四卡| 精品国产品在线18年| 久久九九日本韩国精品| 么公在浴室了我的奶| 精品亚洲一区二区在线播放| 久操久操久操| 国产亚洲精品久久久久久久软件| 国产午夜人成在线视频麻豆| 九九热在线视频精品店| 免费A级毛片无码鲁大师| 日本少妇无码精品12P| 午夜伦理电影在线观免费| 日韩一区二区在线免费观看| 婷婷精品国产亚洲AV在线观看| 亚欧乱亚欧乱色视频| 亚洲中文字幕在线精品| 亚洲高清无在码在线电影| 一本道亚洲区免费观看| 99福利在线| 国产短视频精品区| 精品AV综合导航| 欧美00后rapper潮水| 欧美最新色p图| 忘忧草在线影院www日本| 亚洲欧美自拍清纯中文字幕| 97人妻中文字幕免费视频 | 老师湿乎乎两半嫩| 久久两性视频| 日本欧美午夜三级| 亚洲精品视频区| 亚洲一区在线视频观看| porono日本xxx| 国内精品久久人妻无码HD浪潮 | 白洁在线观看|