本项目包括利用多线程、select、poll以及epoll实现的并发处理连接请求

时间:2022-04-21 20:52:44
【文件属性】:

文件名称:本项目包括利用多线程、select、poll以及epoll实现的并发处理连接请求

文件大小:53KB

文件格式:ZIP

更新时间:2022-04-21 20:52:44

服务器 网络

服务器与客户端建立连接需要使用到一些接口,包括但不限于socket、bind、listen、accept.高并发编程会有一些服务器模型,例如reactor或proactor。这两类都要使用到IO多路复用,O多路复用是指单个进程/线程就可以同时处理多个IO请求。有三个方式select、poll、epoll。 select:将文件描述符放入一个集合中,调用select时,将这个集合从用户空间拷贝到内核空间(缺点:每次都要复制,开销大),由内核根据就绪状态修改该集合的内容。 poll:和select几乎没有区别,区别在于文件描述符的存储方式不同,poll采用链表的方式存储,没有最大存储数量的限制; epollepoll底层通过红黑树来描述,并维护一个ready list,将事件表中已经就绪的事件添加到这里,在使用epoll_wait调用时,仅观察这个list中有没有数据即可。


【文件预览】:
select-poll-epoll
----epoll_main.c(3KB)
----picture()
--------select.png(17KB)
--------pthread.png(9KB)
--------poll.png(12KB)
--------epoll.png(13KB)
----select_main.c(4KB)
----poll_main.c(3KB)
----README.md(516B)
----pthread_main.c(2KB)

网友评论