六种Socket I/O模型幽默讲解
六种Socket I/O模型幽默讲解 https://www.cnblogs.com/jikebiancheng/p/6225009.html 原贴已经找不到了.. 老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。他们的信会被邮递员投递到他们的信箱里。 这和Socket模型非常类似。下面就以此为例讲解Socket I/O模型。 零:阻塞模型 老陈非常想看女儿的信,以至于他什么都不做,就站在门口等。直到接到邮递员给他的信件才开心的看信回信。 这就是阻塞模型,进程阻塞在socket的接收函数上。 一:select模型 但是不吃不喝一直站门口等着总不行吧。所以他每隔10分钟就下楼检查信箱,看是否有女儿的信 。 在这种情况下,“下楼检查信箱“ 然后回到楼上耽误了老陈太多的时间,以至于老陈无法做其他工作。 select模型和老陈的这种情况非常相似:周而复始地去检查…… 如果有数据……接收/发送 ……. 服务器的几个主要动作如下: 创建监听套接字,绑定,监听; 创建工作者线程; 创建一个套接字数组,用来存放当前所有活动的客户端套接字,每accept一个连接就更新一次数组; 接受客户端的连接。 二:WSAAsyncSelect 异步选择模型 后来,老陈使用了微软公司的新式信箱。这种信箱非常先进,一旦信箱里有新的信件,盖茨就会给老陈打电话:喂,大爷,你有新的信件了!从此