首先明确IO分为阻塞IO和非阻塞IO,为了提高性能,windows网络编程中提出了5中IO模型,其中设计select的真正目的是:
1. 防止应用程序在套接字处于锁定模式时,在一次IO绑定调用过程中,被迫进入“锁定”状态;
2. 防止套接字处于非锁定(非阻塞)模式时,产生WSAEWOULDBLOCK错误。
解释下2:
一般在非阻塞模式时,accept等函数会立即返回,错误为WSAEWOULDBLOCK,然后通过循环调用accept直到来了一个连接,这样
调用的效果并不好,所以采用select可以防止产生WSAEWOULDBLOCK错误 ,2 的例子代码如下: