网络编程相关
xiaowenmu1
这个作者很懒,什么都没留下…
展开
-
网络编程中epoll_create的参数和listen的参数
1.epoll_create的参数在linux2.6内核之后就没有什么作用了,这个参数会被忽略,但是必须要大于0。见下图2.listen函数的第二个参数视实现不同而不同(有的实现把backlog*1.5当作未完成连接的最大数,有的实现把backlog当作已完成连接队列和未完成连接队列之和),在linux4.4内核上该值表示未完成连接队列的最大值。可以通过man listen来查看。以下是我...原创 2019-04-18 22:34:00 · 1330 阅读 · 1 评论 -
epoll在多线程下的使用
首先让我们思考一个问题,当一个进程正在阻塞在epoll_wait的时候,另一个线程调用epoll_ctl时会发生什么呢,这个动作安全吗?测试当epoll_wait期间另一个线程执行epoll_ctl是否安全其实这种动作是安全的(测试平台为linux,内核为4.4版本),先看一下man里面的描述,可见是安全的。1.下面让我们来测试一下,首先把fd2加入监听,然后再调用epoll_wa...原创 2019-05-11 14:10:46 · 8921 阅读 · 0 评论 -
epoll_wait返回事件的测试
由epoll返回的事件可以有EPOLLIN,EPOLLOUT,EPOLLRDHUP,EPOLLPRI,EPOLLERR,EPOLLHUP。关于EPOLLIN,EPOLLOUT,EPOLLPRI相信大家都熟悉,EPOLLIN代表有数据可读,EPOLLOUT代表可写,EPOLLPRI代表有带外数据可读。接下来让我们关注一下EPOLLRDHUP,EPOLLERR,EPOLLHUP事件...原创 2019-05-22 11:18:15 · 3726 阅读 · 0 评论 -
epoll的水平触发和边沿触发方式在应用中什么时候会返回可读或可写
水平触发:当我们关注的事件为读事件时,只要缓存中有东西可读,那么就触发;当我们关注的事件为写事件时,只要缓存中有东西可写那么就触发。边沿触发:当我们关注的事件为读事件时:1.当由不可读变为可读时会触发(即BUFFE由空到非空)。2.当可读的内容变多时(即有新的数据到来)会触发。当我们关注的事件为写事件时:1.由不可写变为可写时会触发(即BUFFE由满变为非满)。2.当buffer中...原创 2019-07-16 17:03:35 · 628 阅读 · 0 评论