标签:中介 一个 set 就是 结果 socket sele blocking 概念
同步:发出一个功能调用时,在没有得到结果之前,该调用就不会返回,原地等待
异步:相反,不需要等待
阻塞:调用结果返回之前,当前线程会被挂起,如io操作,只有在得到返回结果之后,才会将阻塞的线程激活和同步不一样,不要混淆,同步虽然也在原地等待,但是它的线程还是激活的。
非阻塞 相反
阻塞IO:socket默认是阻塞的
解决方案:使用多线程或多进程,但是问题是如果连接数太多,会严重占用计算机资源使用线程池或进程池,只是一定程度上缓解了,但是池子始终有上限。。。所以还是用非阻塞吧。
非阻塞IO:用户进程其实是需要不断的主动询问kernel数据准备好了没有。
server.setblocking(False)
弊端:循环调用recv()将大幅度cpu占用率。检测操作是否完成,绝不被推荐
多路复用IO:事件驱动模型
select 代替我们去询问,相当于中介处理的连接数不是很高,还不如之前的,但是如果连接数非常大,效果显而易见的。
标签:中介 一个 set 就是 结果 socket sele blocking 概念
原文地址:https://www.cnblogs.com/xjmlove/p/10392754.html