epoll/libev/libevent
SoulNov23
那些我们说着永远不分离的朋友,早已散落在天涯,时光的洪流中,我们总会长大。
展开
-
libevent使用event事件触发服务端实例
struct event_base* m_base = event_base_new();if (NULL == m_base){ return 1;}首先是创建base,后面的event都是基于base,关联到base才能进入循环。struct sockaddr_in server_addr;server_addr.sin_family = AF_INET;server_addr原创 2016-11-05 17:03:37 · 2545 阅读 · 0 评论 -
libevent多线程使用bufferevent的那些事
void do_accept(struct evconnlistener *listener, evutil_socket_t fd, struct sockaddr *sa, int socklen, void *ctx){ //不使用Nagle算法,选择立即发送数据而不是等待产生更多的数据然后再一次发送 int optval = 1; setsockopt(fd, SO原创 2016-11-09 17:42:20 · 8020 阅读 · 12 评论 -
epoll的ET和LT模式下,accept,recv,send写法
epoll有两种事件模型: Level Triggered (LT) 水平触发 socket接收缓冲区不为空,有数据可读,读事件一直触发 socket发送缓冲区不满,可以继续写入数据,写事件一直触发 Edge Triggered (ET) 边缘触发 socket的接收缓冲区状态变化时触发读事件,即空的接收缓冲区刚接收到数据时触发读事件 socket的发送缓冲区状态变化时触发写事件,即满的原创 2017-09-22 19:49:45 · 4783 阅读 · 2 评论 -
python的libev库pyev一点心得
http://pythonhosted.org/pyev/examples.html 这是官方文档给的例子,基本需求对照着看了就可以写了,一般用事件模型,无非就是关心一个有连接可以accept,一个有数据可以read的事件,然后就是定时器,这里都有了。 1.例子中的reset函数 事件每次触发结束了,都要调用reset函数,reset函数的作用是重新注册一次事件,为什么要这么做了?以前用惯了l原创 2017-11-18 16:14:55 · 2654 阅读 · 0 评论 -
从epoll源码分析它的使用
首先来看看epoll_create的真身SYSCALL_DEFINE1(epoll_create, int, size){ if (size <= 0) return -EINVAL; //也就是说参数size根本用不上 return sys_epoll_create1(0);}再来看看epoll_create1的真身SYSCALL_DEFINE1(epoll_c原创 2017-04-06 15:17:40 · 1522 阅读 · 1 评论 -
python使用epoll实现的服务端例子
#!/usr/bin/python# -*- coding: UTF-8 -*-import socketimport selectsend_data = "hello world!"send_len = len(send_data)recv_len = 1024tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)原创 2017-09-22 18:58:29 · 1183 阅读 · 0 评论 -
epoll的ET和LT模式触发场景
epoll有两种事件模型:Level Triggered (LT) 水平触发socket接收缓冲区不为空,有数据可读,读事件一直触发socket发送缓冲区不满,可以继续写入数据,写事件一直触发Edge Triggered (ET) 边缘触发socket的接收缓冲区状态变化时触发读事件socket的发送缓冲区状态变化时触发写事件总结:水平触发:只要可读,就一直触发读事件,只要可写,就...原创 2019-04-12 14:15:25 · 3198 阅读 · 10 评论