服务器的调度策略
非阻塞轮询(UDP)
将所有的套接字都设置为非阻塞模式,这样就不用担心客户端不发出数据导致服务器端卡死的问题,但服务器无法得知数据何时到达,所以服务器需要不断地尝试读取客户端数据,这就是采用轮询方式实现。
多任务并发(TCP)
多任务并发就是利用多进程或者多线程来达到同时处理多个套接字的目的,一般在服务器上常使用多线程并发。
可以创建一个线程专门用于监听,当监听到有客户端请求连接的时候,服务器创建一个新的线程给申请连接的客户端
异步信号(UDP)
用信号来驱使服务器妥善处理多个远端套接字,每当远端有数据到达,那么就在本端触发信号,然后利用信号的异步特性来处理这些远端信息。SIGIO信号默认会杀死目标进程,所以需要使用signal函数设置信号的处理函数
默认情况下,套接字收到数据时不会触发SIGIO信号,所以必须将套接字设定为异步工作模式,它才会触发该信号。
多路复用(TCP)
多路复用是通过某个特定的接口来同时监听多路阻塞IO,这就达到既无需多进程多线程,又可以同时处理多个阻塞套接字的目的。可以使用select函数,此函数返回时,会将集合中的未处于就绪状态的套接字全部清除
浙公网安备 33010602011771号