读了《Netty权威指南第二版》的1.1.1章中关于Unix编程对IO模型的分类,有了一点自己的感想。觉得虽然书上说的挺好但不够直观,所以dark就通过五种不同的吃饭经历来理解这五种模型,不废话,上干货
UNIX支持的五種IO模型,分別為:
1:阻塞IO
相當於食客到野攤兒上吃飯。告訴完我要吃什麼之後,就只能全程圍觀廚師做飯雖然沒人加塞但也不能離開。直到自己的那份飯菜做好再拿走為止。
2:非阻塞IO
食客到了一個稍微高級點的野攤兒,但是因為高級了,那麼來吃飯的人也就多了。所以這時食客不能離開,否則會被別人加塞,需要時不時的問問廚師我的飯好了沒,直到做熟拿走就可以了。這種模式的食客需要多次詢問廚師。且依然被死死地捆綁在廚師周圍。
3:IO複用
這次,食客到了一個更加高級的狗食館兒,這裡做飯的廚師已經有好幾個了,所以就多了個叫號的服務員,她幫食客關注誰的飯菜熟了。這時,食客只需要把要吃的東西告訴叫號的服務員而不必圍觀廚師了,直到廚師通知服務員,再讓服務員通知對應的食客取飯為止。在這個過程中,食客從在廚房圍觀等待,變為了在廚房外面,守著叫號員等待。食客依然不能被解放出來做自己的事情。
4:信號驅動IO
這次就厲害了。食客既不需要圍觀廚師,也不需要圍觀叫號員。只需要通過大眾點評或美團進行網上點餐。然後就可以放飛自我幹自己的事情。直到飯好了,會有軟件發出提示音來通知食客取餐。
5:異步IO
這次食客牛逼的一腿,除了有大眾點評這些網上下單的,還有了百度外賣小哥幫你送飯,因此食客在下單後,只需要等著有人把飯送到你家開吃就行啦。這次完全不需要食客自己去取餐了。太先進啦。
水平所限,举的例子未必合適,僅供大家多一種途徑去理解這一思想,有不足之處,歡迎大家指正。