同步阻塞:
有一天你饿了,要去肯德基吃饭,然后你去找了服务员,要了一份麦辣鸡腿堡,服务员说“稍等”,然后他过了一天才给你,你就在窗口站着等了一天。
等着(汉堡) //就堵这了
再做别的()
同步非阻塞:
有一天你饿了,要去肯德基吃饭,然后你去找了服务员,要了一份麦辣鸡腿堡,一份薯条,一份鸡翅,服务员说“稍等”,然后你就回家了,然后你每过一个小时回来挨个问一下,“汉堡好了吗,薯条好了吗,鸡翅好了吗”,汉堡好了,然后你过去拿到了汉堡,薯条好了,然后你过去拿到了薯条,鸡翅好了,然后你过去拿到了鸡翅。
while true {
for i in 汉堡薯条鸡翅 {
if i is 好了
吃掉(i)
}
playLOL()
}
异步非阻塞:
有一天你饿了,要去肯德基吃饭,然后你去找了服务员,要了一份麦辣鸡腿堡,服务员说“稍等”,然后你就回家了,然后第二天汉堡才好,第二天他把汉堡外卖送到了你家。
要个(this,汉堡) //只是请求一下
playLOL()
onReceive(汉堡){
eat(汉堡) //这里收
}
收到请求(dc,汉堡)
做(汉堡)
send(dc,汉堡) //这里发
异步阻塞:
有一天你饿了,要去肯德基吃饭,然后你去找了服务员,要了一份麦辣鸡腿堡,一份薯条,一份鸡翅,服务员说“稍等”,这次你不想每过一个小时问一次了,于是你找了一个助手叫epoll,他帮你盯着,你就等着,他发现汉堡好了后,通知你,然后你再去拿汉堡,他发现薯条好了后,再通知你……
while true {
做好的[] = epoll_wait(汉堡薯条鸡翅)
for i in 做好的[] {
吃掉
}
}
(epoll的底层实现是socket监控,收到中断)