中文在线一区二区_欧美在线综合_久久久久久综合_欧美一区二区三区视频_国产免费看_国产福利精品一区

進程阻塞

正在運行的進程由于提出系統(tǒng)服務請求(如I/O操作),但因為某種原因未得到操作系統(tǒng)的立即響應,或者需要從其他合作進程獲得的數(shù)據(jù)尚未到達等原因,該進程只能調(diào)用阻塞原語把自己阻塞,等待相應的事件出現(xiàn)后才被喚醒。

阻塞狀態(tài)

正在進行的進程由于發(fā)生某事件而暫時無法繼續(xù)執(zhí)行時,便放棄處理機而處于暫停狀態(tài),亦即進程的執(zhí)行受到阻塞,我們把這種暫停狀態(tài)叫阻塞進程阻塞,有時也成為等待狀態(tài)或封鎖狀態(tài)。通常這種處于阻塞狀態(tài)的進程也排成一個隊列。有的系統(tǒng)則根據(jù)阻塞原因的不同而處于阻塞狀態(tài)進程排成多個隊列。

例如:
用戶訪問服務端,請求用戶的個人的訂單信息,由于數(shù)據(jù)庫數(shù)據(jù)量大,數(shù)據(jù)庫繁忙,sql語句查詢了3秒才返回,這個查詢數(shù)據(jù)庫的過程,就是可稱為是"阻塞的".(進程調(diào)用外部邏輯)

阻塞這個概念和時間關系不大,就算查了0.1秒,也可以說是阻塞了0.1秒,因為這個并不是進程本身執(zhí)行所消耗的時間,而是因為查詢數(shù)據(jù)庫,等待數(shù)據(jù)庫響應消耗的時間. 但阻塞的危害性和時間有關,阻塞0.1秒對于用戶是沒有任何問題的,但是阻塞10秒將會使用戶體驗下降很多,所以我們需要重視阻塞

用戶訪問服務端,由于某個地方調(diào)用了死循環(huán)或多重循環(huán)浪費了許多時間,無法繼續(xù)往下執(zhí)行,這個狀態(tài)也可稱為阻塞.(非進程阻塞,可自行避免)
非進程阻塞 在進程阻塞層面中,并不算是被阻塞了,因為它依舊在執(zhí)行進程中的代碼,沒有等待清空

阻塞函數(shù)

如上所說,調(diào)用數(shù)據(jù)庫等外部邏輯,造成阻塞的函數(shù),就叫做阻塞函數(shù)

php中的阻塞

在php初級開發(fā)者中,或許沒有聽過這個概念,阻塞往往是和"同步"概念一起存在的,例如查詢數(shù)據(jù)庫,獲取文件數(shù)據(jù),請求其他網(wǎng)站,等等,只要需要消耗非進程本身執(zhí)行時間并需要進程等待(同步)的,都可以說是阻塞.

幾乎所有的阻塞,都是與I/O有關.
阻塞一定是同步代碼調(diào)用阻塞函數(shù)才會阻塞,但同步代碼不一定會阻塞(不調(diào)用阻塞函數(shù)的同步代碼)

<?php
$num = 30;
$result = M('test')->select();//偽代碼,sql阻塞
sleep(3);//偽代碼,當成執(zhí)行了3秒才返回
echo json_encode($result);//返回數(shù)據(jù)

可自行搜索了解更多

非阻塞

非阻塞,顧名思義,就是在進程在運行中,不存在阻塞情況,一直能往下執(zhí)行.

非阻塞一般是指調(diào)用I/O操作時,進程無需等待I/O操作,直接往下執(zhí)行的情況 非阻塞通常是和"異步"概念一起存在,只要是異步獲取I/O,就一定是非阻塞
異步調(diào)用I/O一定是非阻塞的,但非阻塞不一定需要異步調(diào)用才可實現(xiàn)(非阻塞模型)

例如:
當查詢數(shù)據(jù)庫時,馬上返回狀態(tài)(查詢到了就返回數(shù)據(jù),數(shù)據(jù)還沒到就返回-1),程序可以立即往下執(zhí)行邏輯.

這種馬上返回結果,無需等待(并不一定有數(shù)據(jù))的函數(shù),就叫做非阻塞函數(shù),也可稱為是"異步調(diào)用"

非阻塞模型

可以通過非阻塞模型去實現(xiàn)非阻塞(主要針對于server服務端實現(xiàn)).

php中的非阻塞

php初級開發(fā)者中,很少有非阻塞這個概念存在,但php是有非阻塞的,例如socket_set_nonblock()函數(shù),將socket改為非阻塞狀態(tài)
通過flock($file,LOCK_EX|LOCK_NB),可將文件操作設置為非阻塞狀態(tài)
可自行搜索了解詳細

非阻塞注意事項

由于非阻塞的返回結果是不確定的,當我們需要關心返回結果的情況時,需要確保返回結果是正確的(例如while(1){}定時查詢,當數(shù)據(jù)正確返回退出循環(huán)),或者直接使用阻塞函數(shù)

阻塞和非阻塞的舉例

阻塞:
小明去電腦店買Mac,問店員現(xiàn)在有沒有MacBook Pro版本,有多少臺,店員告訴小明,"我得去查一查,你得等等",小明站在店門口等了2天,店員回來了,告訴小明,現(xiàn)在有10臺,然后小明買了一臺.

在這個過程中,店員查詢是否有mbp的動作,就屬于I/O操作,叫小明等等這個操作,就是阻塞情況,小明等了2天,就說明查詢mbp時間為2天,阻塞了2天,店員回來告訴小明有10臺,就是阻塞函數(shù)出現(xiàn)了結果,并返回了數(shù)據(jù),小明買了一臺,就是繼續(xù)往下執(zhí)行了代碼

非阻塞: 小明去電腦店買Mac,問店員現(xiàn)在有沒有MacBook Pro版本,有多少臺,店員告訴小明,"我得去查一查,你先回去唄",小明回家,每隔10分鐘打電話給店員,但是店員每次都告訴他還沒查到,小明每次打完電話就去敲PHP代碼,2天后,小明打完一把LOL,又打電話給店員問,店員告訴小明,現(xiàn)在有10臺了,然后小明買了一臺.

在這個過程中,店員查詢是否有mbp的動作,就屬于I/O操作,叫小明回家這個操作,就是非阻塞情況,小明不斷打電話,這個就是定時輪詢查詢,店員不斷的回復,這個情況就是非阻塞函數(shù)沒有返回數(shù)據(jù),小明去敲PHP,說明非阻塞情況還能執(zhí)行其他代碼,2天后,店員回來告訴小明有10臺,就是非阻塞函數(shù)通過輪詢出現(xiàn)了結果,并返回了數(shù)據(jù),小明買了一臺,就是退出了循環(huán)繼續(xù)往下執(zhí)行了代碼

同步異步

主站蜘蛛池模板: 久久久久久久久久久久久国产 | 色爱区综合五月激情 | 日韩毛片免费在线观看 | 欧美高清一区 | 欧美不卡视频 | 日韩精品在线一区 | 黄色国产在线看 | 欧美国产精品一区二区三区 | 国产99久久久精品视频 | 欧美精品一区三区 | 欧美透逼视频 | 青青久草 | 91在线精品一区二区 | 精品视频一区二区三区 | 一区二区三区欧美 | 亚洲精品一区二区三区在线观看 | 欧美精品在线看 | 久久精品国产欧美亚洲人人爽 | 玖玖色资源 | 免费看a| baoyu123成人免费看视频 | 亚洲激情在线 | 亚洲成人午夜电影 | 精品国产乱码一区二区三区 | 日韩国产欧美视频 | 激情久久婷婷 | 精品国产一区二区三区小蝌蚪 | 天堂在线免费视频 | 日韩综合一区 | 亚洲精品国产a久久久久久 中文字幕在线第一页 | 国产在线精品一区 | 国产一区二区三区四 | 特黄特色一级片 | 成人激情在线观看 | 免费看少妇高潮一级毛片特黄 | 蜜桃视频网站入口 | 国产综合精品一区二区三区 | 日韩成人中文字幕 | 在线国产一区二区 | 国产黄色在线 | 福利网址 |