日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Python基礎(chǔ)必備知識(shí):同步異步阻塞非阻塞

一、狀態(tài)介紹

在源匯等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供網(wǎng)站制作、做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,營(yíng)銷(xiāo)型網(wǎng)站建設(shè),外貿(mào)網(wǎng)站建設(shè),源匯網(wǎng)站建設(shè)費(fèi)用合理。

在了解其他概念之前,我們首先要了解進(jìn)程的幾個(gè)狀態(tài)。在程序運(yùn)行的過(guò)程中,由于被操作系統(tǒng)的調(diào)度算法控制,程序會(huì)進(jìn)入幾個(gè)狀態(tài):就緒,運(yùn)行和阻塞。

就緒(Ready)狀態(tài):當(dāng)進(jìn)程已分配到除CPU以外的所有必要的資源,只要獲得處理機(jī)便可立即執(zhí)行,這時(shí)的進(jìn)程狀態(tài)稱(chēng)為就緒狀態(tài)。

執(zhí)行/運(yùn)行(Running)狀態(tài)當(dāng)進(jìn)程已獲得處理機(jī),其程序正在處理機(jī)上執(zhí)行,此時(shí)的進(jìn)程狀態(tài)稱(chēng)為執(zhí)行狀態(tài)。

阻塞(Blocked)狀態(tài)正在執(zhí)行的進(jìn)程,由于等待某個(gè)事件發(fā)生而無(wú)法執(zhí)行時(shí),便放棄處理機(jī)而處于阻塞狀態(tài)。引起進(jìn)程阻塞的事件可有多種,例如,等待I/O完成、申請(qǐng)緩沖區(qū)不能滿(mǎn)足、等待信件(信號(hào))等。

二、同步和異步

所謂同步就是一個(gè)任務(wù)的完成需要依賴(lài)另外一個(gè)任務(wù)時(shí),只有等待被依賴(lài)的任務(wù)完成后,依賴(lài)的任務(wù)才能算完成,這是一種可靠的任務(wù)序列。要么成功都成功,失敗都失敗,兩個(gè)任務(wù)的狀態(tài)可以保持一致。

所謂異步是不需要等待被依賴(lài)的任務(wù)完成,只是通知被依賴(lài)的任務(wù)要完成什么工作,依賴(lài)的任務(wù)也立即執(zhí)行,只要自己完成了整個(gè)任務(wù)就算完成了。至于被依賴(lài)的任務(wù)最終是否真正完成,依賴(lài)它的任務(wù)無(wú)法確定,所以它是不可靠的任務(wù)序列。

2.1 例子

比如我去銀行辦理業(yè)務(wù),可能會(huì)有兩種方式:

第一種 :選擇排隊(duì)等候;

第二種 :選擇取一個(gè)小紙條上面有我的號(hào)碼,等到排到我這一號(hào)時(shí)由柜臺(tái)的人通知我輪到我去辦理業(yè)務(wù)了;

第一種:前者(排隊(duì)等候)就是同步等待消息通知,也就是我要一直在等待銀行辦理業(yè)務(wù)情況;

第二種:后者(等待別人通知)就是異步等待消息通知。在異步消息處理中,等待消息通知者(在這個(gè)例子中就是等待辦理業(yè)務(wù)的人)往往注冊(cè)一個(gè)回調(diào)機(jī)制,在所等待的事件被觸發(fā)時(shí)由觸發(fā)機(jī)制(在這里是柜臺(tái)的人)通過(guò)某種機(jī)制(在這里是寫(xiě)在小紙條上的號(hào)碼,喊號(hào))找到等待該事件的人。

三、阻塞和非阻塞

阻塞和非阻塞這兩個(gè)概念與程序(線(xiàn)程)等待消息通知(無(wú)所謂同步或者異步)時(shí)的狀態(tài)有關(guān)。也就是說(shuō)阻塞與非阻塞主要是程序(線(xiàn)程)等待消息通知時(shí)的狀態(tài)角度來(lái)說(shuō)的

3.1 例子

繼續(xù)上面的那個(gè)例子,不論是排隊(duì)還是使用號(hào)碼等待通知,如果在這個(gè)等待的過(guò)程中,等待者除了等待消息通知之外不能做其它的事情,那么該機(jī)制就是阻塞的,表現(xiàn)在程序中,也就是該程序一直阻塞在該函數(shù)調(diào)用處不能繼續(xù)往下執(zhí)行。

相反,有的人喜歡在銀行辦理這些業(yè)務(wù)的時(shí)候一邊打打電話(huà)發(fā)發(fā)短信一邊等待,這樣的狀態(tài)就是非阻塞的,因?yàn)樗?等待者)沒(méi)有阻塞在這個(gè)消息通知上,而是一邊做自己的事情一邊等待。

注意:同步非阻塞形式實(shí)際上是效率低下的,想象一下你一邊打著電話(huà)一邊還需要抬頭看到底隊(duì)伍排到你了沒(méi)有。如果把打電話(huà)和觀(guān)察排隊(duì)的位置看成是程序的兩個(gè)操作的話(huà),這個(gè)程序需要在這兩種不同的行為之間來(lái)回的切換,效率可想而知是低下的;而異步非阻塞形式卻沒(méi)有這樣的問(wèn)題,因?yàn)榇螂娫?huà)是你(等待者)的事情,而通知你則是柜臺(tái)(消息觸發(fā)機(jī)制)的事情,程序沒(méi)有在兩種不同的操作中來(lái)回切換。

四、同步/異步和阻塞/非阻塞

4.1 同步阻塞形式

效率最低。拿上面的例子來(lái)說(shuō),就是你專(zhuān)心排隊(duì),什么別的事都不做。

4.2 異步阻塞形式

如果在銀行等待辦理業(yè)務(wù)的人采用的是異步的方式去等待消息被觸發(fā)(通知),也就是領(lǐng)了一張小紙條,假如在這段時(shí)間里他不能離開(kāi)銀行做其它的事情,那么很顯然,這個(gè)人被阻塞在了這個(gè)等待的操作上面。

異步操作是可以被阻塞住的,只不過(guò)它不是在處理消息時(shí)阻塞,而是在等待消息通知時(shí)被阻塞。

4.3 同步非阻塞形式

實(shí)際上是效率低下的。

想象一下你一邊打著電話(huà)一邊還需要抬頭看到底隊(duì)伍排到你了沒(méi)有,如果把打電話(huà)和觀(guān)察排隊(duì)的位置看成是程序的兩個(gè)操作的話(huà),這個(gè)程序需要在這兩種不同的行為之間來(lái)回的切換,效率可想而知是低下的。

4.4 異步非阻塞形式

效率更高,

因?yàn)榇螂娫?huà)是你(等待者)的事情,而通知你則是柜臺(tái)(消息觸發(fā)機(jī)制)的事情,程序沒(méi)有在兩種不同的操作中來(lái)回切換。

比如說(shuō),這個(gè)人突然發(fā)覺(jué)自己煙癮犯了,需要出去抽根煙,于是他告訴大堂經(jīng)理說(shuō),排到我這個(gè)號(hào)碼的時(shí)候麻煩到外面通知我一下,那么他就沒(méi)有被阻塞在這個(gè)等待的操作上面,自然這個(gè)就是異步+非阻塞的方式了。

很多人會(huì)把同步和阻塞混淆,是因?yàn)楹芏鄷r(shí)候同步操作會(huì)以阻塞的形式表現(xiàn)出來(lái),同樣的,很多人也會(huì)把異步和非阻塞混淆,因?yàn)楫惒讲僮饕话愣疾粫?huì)在真正的IO操作處被阻塞。


當(dāng)前題目:Python基礎(chǔ)必備知識(shí):同步異步阻塞非阻塞
本文來(lái)源:http://www.5511xx.com/article/dhcophg.html