成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python基礎必備知識:同步異步阻塞非阻塞

開發 后端
在了解其他概念之前,我們首先要了解進程的幾個狀態。在程序運行的過程中,由于被操作系統的調度算法控制,程序會進入幾個狀態:就緒,運行和阻塞。

[[271500]]

 一、狀態介紹

 

Python基礎必備知識:同步異步阻塞非阻塞

 

在了解其他概念之前,我們首先要了解進程的幾個狀態。在程序運行的過程中,由于被操作系統的調度算法控制,程序會進入幾個狀態:就緒,運行和阻塞。

就緒(Ready)狀態:當進程已分配到除CPU以外的所有必要的資源,只要獲得處理機便可立即執行,這時的進程狀態稱為就緒狀態。

執行/運行(Running)狀態當進程已獲得處理機,其程序正在處理機上執行,此時的進程狀態稱為執行狀態。

阻塞(Blocked)狀態正在執行的進程,由于等待某個事件發生而無法執行時,便放棄處理機而處于阻塞狀態。引起進程阻塞的事件可有多種,例如,等待I/O完成、申請緩沖區不能滿足、等待信件(信號)等。

 

Python基礎必備知識:同步異步阻塞非阻塞

 

二、同步和異步

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

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

2.1 例子

比如我去銀行辦理業務,可能會有兩種方式:

第一種 :選擇排隊等候;

第二種 :選擇取一個小紙條上面有我的號碼,等到排到我這一號時由柜臺的人通知我輪到我去辦理業務了;

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

第二種:后者(等待別人通知)就是異步等待消息通知。在異步消息處理中,等待消息通知者(在這個例子中就是等待辦理業務的人)往往注冊一個回調機制,在所等待的事件被觸發時由觸發機制(在這里是柜臺的人)通過某種機制(在這里是寫在小紙條上的號碼,喊號)找到等待該事件的人。

三、阻塞和非阻塞

阻塞和非阻塞這兩個概念與程序(線程)等待消息通知(無所謂同步或者異步)時的狀態有關。也就是說阻塞與非阻塞主要是程序(線程)等待消息通知時的狀態角度來說的

3.1 例子

繼續上面的那個例子,不論是排隊還是使用號碼等待通知,如果在這個等待的過程中,等待者除了等待消息通知之外不能做其它的事情,那么該機制就是阻塞的,表現在程序中,也就是該程序一直阻塞在該函數調用處不能繼續往下執行。

相反,有的人喜歡在銀行辦理這些業務的時候一邊打打電話發發短信一邊等待,這樣的狀態就是非阻塞的,因為他(等待者)沒有阻塞在這個消息通知上,而是一邊做自己的事情一邊等待。

注意:同步非阻塞形式實際上是效率低下的,想象一下你一邊打著電話一邊還需要抬頭看到底隊伍排到你了沒有。如果把打電話和觀察排隊的位置看成是程序的兩個操作的話,這個程序需要在這兩種不同的行為之間來回的切換,效率可想而知是低下的;而異步非阻塞形式卻沒有這樣的問題,因為打電話是你(等待者)的事情,而通知你則是柜臺(消息觸發機制)的事情,程序沒有在兩種不同的操作中來回切換。

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

4.1 同步阻塞形式

效率最低。拿上面的例子來說,就是你專心排隊,什么別的事都不做。

4.2 異步阻塞形式

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

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

4.3 同步非阻塞形式

實際上是效率低下的。

想象一下你一邊打著電話一邊還需要抬頭看到底隊伍排到你了沒有,如果把打電話和觀察排隊的位置看成是程序的兩個操作的話,這個程序需要在這兩種不同的行為之間來回的切換,效率可想而知是低下的。

4.4 異步非阻塞形式

效率更高,

因為打電話是你(等待者)的事情,而通知你則是柜臺(消息觸發機制)的事情,程序沒有在兩種不同的操作中來回切換。

比如說,這個人突然發覺自己煙癮犯了,需要出去抽根煙,于是他告訴大堂經理說,排到我這個號碼的時候麻煩到外面通知我一下,那么他就沒有被阻塞在這個等待的操作上面,自然這個就是異步+非阻塞的方式了。

很多人會把同步和阻塞混淆,是因為很多時候同步操作會以阻塞的形式表現出來,同樣的,很多人也會把異步和非阻塞混淆,因為異步操作一般都不會在真正的IO操作處被阻塞。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2012-10-10 10:00:27

同步異步開發Java

2024-09-23 17:15:28

Python并發并行

2012-02-22 21:15:41

unixIO阻塞

2018-03-28 08:52:53

阻塞非阻塞I

2015-07-03 10:12:04

編程同步非阻塞

2025-02-17 13:23:34

Python同步阻塞MySQL

2021-03-04 08:34:55

同步阻塞非阻塞

2021-06-04 18:14:15

阻塞非阻塞tcp

2023-12-06 07:28:47

阻塞IO異步IO

2022-06-22 08:16:29

異步非阻塞框架

2021-02-27 16:08:17

Java異步非阻塞

2024-08-05 09:16:54

2019-05-05 08:50:42

阻塞非阻塞BIO

2016-11-28 09:08:43

java系統異步非阻塞

2017-03-01 16:40:12

Linux驅動技術設備阻塞

2021-01-10 11:21:33

JavaScript語言開發

2009-08-21 17:19:36

C#網絡編程入門

2024-09-05 09:41:57

2024-12-02 00:57:17

非阻塞異步編程

2023-03-15 08:39:07

遠程服務調用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品中文字幕久久 | 射欧美| 美女黄色在线观看 | 亚洲成人一级 | av资源中文在线天堂 | 国产精品国产三级国产aⅴ中文 | 91精品国产91久久久久久最新 | 91资源在线 | av网站免费看 | 久久久99国产精品免费 | 国产精品亚洲综合 | 免费污视频 | 在线观看特色大片免费网站 | 久久久国产精品 | 中文字幕精品视频 | 久草在线青青草 | h视频亚洲| 欧美激情亚洲激情 | 欧美精品1区2区 | 欧美精三区欧美精三区 | 色婷婷精品久久二区二区蜜臂av | www亚洲精品 | 国产精品a级 | 天天想天天干 | 日本不卡高字幕在线2019 | 国产精品一区二区三区在线 | av中文在线观看 | 视频一区中文字幕 | 中国一级特黄毛片大片 | 中文字幕 在线观看 | 欧美一区二区三区四区在线 | 久久一区二区三区电影 | 日本成人在线免费视频 | 色视频网站在线观看 | 午夜影院 | 日韩欧美国产不卡 | 国产精品久久久久久亚洲调教 | 国产一二三区电影 | 日本不卡一区二区 | 伊人网一区 | 在线看无码的免费网站 |