IO模型與吃飯的那些事

kumfo 發表於 2022-05-14

瞎寫的,大家看了圖個樂,說得不對歡迎指正。

阻塞IO

萬香樓開張了,今天是第一天接待人,張三是第一個客人,他看了眼選單,對recvfrom說道:“給我來碗臊子面吧,多放臊子。”,recvfrom客氣道:“好,稍等哈,我立馬給你做”。這一做就是20分鐘過去了,後面排隊的後面李四、王五、馬六不願意了。李四不耐煩的道:“老闆你能不能快點的啊,這這麼搞等吃到飯都要暈倒了啊!”

非阻塞IO

recvfrom對李四客氣道:“不好意思哈,我這臊子準備得有點少,我賠償你個EWOULDBLOCK吧,你先換一家哈。”,李四想了下繼續等下去也沒啥意義,便轉身走了。

IO複用模型

王五和馬六覺得都排了這麼久了,想了下,走了也不是辦法,下家是不是也要這樣排隊等都不知道呢,正好這時候湧入了一大批人。王五想了想道:“老闆,這樣吧,我這正好有兩套號碼牌fd,你先拿來用一下,每個人點菜之後你給發一張,你做好了之後,你放到指定號碼牌上,然後讓你那個8歲娃select/poll|epoll看著點,如果做好了就讓你娃根據號碼牌說一聲,然後我們自己來取就好了。”老闆露出感激的眼神,對王五連連道謝。於是大家有序點餐,老闆的大骨頭飯和滷肉飯倒是管夠,好幾個人點到了就直接拿到手就去坐著吃了,還有好幾個人點了些京醬肉絲、臊子面啥的都還沒準備好,便坐到旁邊安靜的刷著手機等待了起來。

訊號驅動IO模型

王五和馬六坐了好一會,馬六看到老闆小孩看那些號碼牌,跑來跑去的,老汗都冒出來了,於是捅了捅旁邊的王五:“你那個號碼牌都給老闆了,其實沒必要看著吧,你讓老闆對應號的菜做好了叫一聲SIGIO指定的號不就行了麼?”

王五一拍大腿:“誒,是這個道理,我去說一聲哈。”

非同步IO模型

正好這時,老闆媳婦來了,老闆覺得很多人都等了挺久了,於是對他媳婦說:“我這裡的菜做好後,你等會按照這個號碼牌,找到對應號碼的客人,把飯端過去給他們吧,這樣也不用客人老是跑來跑去的。他們只要點好菜去坐著就行了。”