一个线程对应一个服务端口,对应多个客户端fd。多路复用跟端口无关。多路复用指单线程管理多个连接的通信。多路复用编程流程:初始化多路复用器,(比如epoll_create,kqueue_init)服务端接收新连接,获得fd将fd和事件(read/write)注册到多路复用器(比如epoll_ctl,kqueue EV_SET)调用poll(比如epoll_wait,kqueue)当注册的fd有指定事件发生时,poll函数将获得这些fd以及对应的事件,此时可以调用read或者write函数处理数据。多路复用通过事件形式通知用户线程进行read/write/accept操作,避免了阻塞(没数据的时候read/write/accept会阻塞线程)。
多路复用跟端口无关。
多路复用指单线程管理多个连接的通信。
多路复用编程流程:
epoll_create
,kqueue_init
)read
/write
)注册到多路复用器(比如epoll_ctl
,kqueue EV_SET
)epoll_wait
,kqueue
)当注册的fd有指定事件发生时,
poll
函数将获得这些fd以及对应的事件,此时可以调用read
或者write
函数处理数据。多路复用通过事件形式通知用户线程进行
read
/write
/accept
操作,避免了阻塞(没数据的时候read/write/accept会阻塞线程)。