IO(Input/Output,輸入輸出)
在計算機中,輸入 / 輸出(即 IO)是指資訊處理系統(比如計算機)和外部世界(可以是人或其他資訊處理系統)的通信,輸入是指系統接收的信號或資料,輸出是指從系統發出的資料或信號,由于程式和運行時資料是在記憶體中駐留,由 CPU 這個超快的計算核心來執行,涉及到資料交換的地方,通常是磁盤、網路等,就會有 IO 產生,
同步 - 異步
同步和異步是一種訊息通信機制 (synchronous communication/asynchronous communication),關注點在于 被呼叫者回傳 和 結果回傳 之間的關系, 描述物件是被呼叫物件的行為,
# 同步(Synchronous):在發出一個同步呼叫時,在沒有得到結果之前,該呼叫就不回傳,等待回傳結果才繼續執行后續的操作,
# 異步( Asynchronous):發出呼叫,直接回傳,不關心是否回傳結果,異步可以通過狀態、回呼、 通知呼叫者結果,可以先去執行其他操作,然后等待通知再回來執行剛才沒執行完的操作,
阻塞 - 非阻塞
阻塞和非阻塞是一種業務流程處理方式,關注點在于呼叫發生時 呼叫者狀態 和 被呼叫者回傳結果 之間的關系, 描述的是等待結果時候呼叫者的狀態此時結果可能是同步回傳的,也能是異步回傳,
# 阻塞( Blocking ):在結果回傳之前,當前執行緒被掛起,后續代碼只有在結果回傳后才能執行,
# 非阻塞( Nonblocking):在不能立刻獲取結果前,該呼叫不會阻塞當前執行緒,
同步阻塞 - 同步非阻塞
實際編程中,通過執行緒實作行程的同步非阻塞,通過協程實作執行緒的同步非阻塞,
# 同步阻塞:打電話問老板有沒有某書(呼叫),老板說查一下,讓你別掛電話(同步),你一直等待老板給你結果,什么事也不做(阻塞),
# 同步非阻塞:打電話問老板有沒有某書(呼叫),老板說查一下,讓你別掛電話(同步),等電話的程序中你還一邊嗑瓜子(非阻塞),
異步阻塞 - 異步非阻塞
# 異步阻塞:打電話問老板有沒有某書(呼叫),老板說你先掛電話,有了結果通知你(異步),你掛了電話后(結束呼叫), 除了等老板電話通知結果,什么事情也不做(阻塞),
# 異步非阻塞:打電話問老板有沒有某書(呼叫),老板說你先掛電話,有了結果通知你(異步),你掛電話后(結束呼叫),一遍等電話,一遍嗑瓜子,(非阻塞)
IO 模型
5 種 I/O 模型:
- 阻塞式 I/O
- 非阻塞式 I/O
- I/O 復用(select,poll,epoll…)
- 信號驅動式 I/O(SIGIO)
- 異步 I/O(POSIX 的 aio_系列函式)
IO 模型的具體解釋可以參考 linux 五種 IO 模型
參考資源
- 鏈接:juejin.im/post/5c725dbe51882575e37...
鏈接:phenix3443.github.io/notebook/soft...-
更多PHP內容請訪問:
騰訊T3-T4標準精品PHP架構師教程目錄大全,只要你看完保證薪資上升一個臺階(持續更新)
-
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/17466.html
標籤:PHP
下一篇:vue 界面版ui使用
