Swoole同步/异步/阻塞/非阻塞的理解
生活随笔
收集整理的這篇文章主要介紹了
Swoole同步/异步/阻塞/非阻塞的理解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
說明總結
同步異步:說的是kernel返回處理信息的方法策略
針對程序中碰到耗時任務時,傳遞給Kernel? Kernel處理信息的方式? 有異步api函數是異步?沒的話是同步
IO立即返回:主函數中(task函數) 傳遞任務信息給Kernel,Kernels收到(onTask函數),這個耗時任務我完成之后我會再告訴你的(onFinish) 這是異步
IO完成之后返回:這個是同步 就是一個return即可!
堵塞非堵塞:說的是應用程序執行耗時任務的狀態?
針對的是程序中碰到耗時任務主程序的運行會不會wait?
不wait就是非堵塞? wait就是堵塞? 是說的一個程序的一個任務點狀態!
例子
小張喜歡喝咖啡,同時養了好多狗; 要完成的事情:小張煮咖啡然后喝咖啡 1.小張: application 2.咖啡壺:kernel 內核 3.煮咖啡:耗時任務 4.小狗大黑:查詢信息流 send() rev() 5.小狗大黃:查詢信息流 send() rev() 6.小狗大白大紅:查詢信息流 send() rev() 同步阻塞: 小張派大黑去看咖啡煮好沒,大黑等咖啡煮開了(同步)才回來, 小張也一直在等待(堵塞) ;同步非阻塞: 小張派大黃去看咖啡煮好沒,大黃看了一眼就回來了,過了一會,大黃再去看看咖啡煮好沒(異步), 小張啥也沒有干,還是一直等著(同步)異步非阻塞: 小張派大白和大紅去看咖啡煮好沒,煮咖啡是task,小張就開始看電視了(非堵塞) 大白和大紅到了廚房后,大白就回來告訴小張,大紅已經到廚房啦(onTask異步); 過了一會咖啡煮好了,大紅回到客廳告訴小張(onFinish)異步阻塞: 小張派大白和大紅去看咖啡煮好沒,煮咖啡是task,小張心很急非要一直等著 就開始等著信息(堵塞) 大白和大紅到了廚房后,大白就回來告訴小張,大紅已經到廚房啦,咖啡煮著呢 (onTask異步); 過了一會咖啡煮好了,大紅回到客廳告訴小張(onFinish) 小張這才放松了,繼續干其他的了!感覺有些焦慮啊!圖示
?
從上面的圖可以看出來,其實不管是任何模式,內核的處理方式都是一樣的,都是 1. wait for data(等待數據); 2. copy data from kernel to user(拷貝數據到用戶層)。 而產生這三種模式的差別在于中間使用的api函數不同。https://blog.csdn.net/qq_32725491/article/details/78679414
總結
以上是生活随笔為你收集整理的Swoole同步/异步/阻塞/非阻塞的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux的Nginx二:代理
- 下一篇: 南大光电2021年目标价 主营业务有哪