上QQ阅读APP看书,第一时间看更新
2.3 非阻塞模式开发
Winsock套接字的工作模式有两种,分别是阻塞模式(同步模式)和非阻塞模式(异步模式)。阻塞模式下的Winsock函数会将程序的某个线程(如果程序中只有一个主线程,那么会导致整个程序处于“等待”状态)处于“等待”状态,比如上面的程序中,在调用recv()函数后,该函数在接收到数据前会一直处于等待状态,从而导致整个程序也处于暂停中。非阻塞模式的Winsock函数不会发生需要等待的情况。在异步模式下,当一个函数执行后会立刻返回,即使是操作没有完成也会返回;当函数执行完成时,会以某种方式通知应用程序。显然,异步模式更适合于Windows下的开发。
在本节前面介绍的内容中,Winsock都属于阻塞模式。本节重点介绍异步模式的Winsock编程。