
libevent
hai0808
这个作者很懒,什么都没留下…
展开
-
libevent里list的用法
//list.h#include#ifndef TAILQ_HEAD#define TAILQ_HEAD(name, type)\struct name\{\struct type* tqh_first;\struct type** tqh_last;\}#endif#ifndef TAILQ_ENTRY#define TAILQ_ENTRY(t原创 2016-11-08 15:51:55 · 366 阅读 · 0 评论 -
libevent 获取多线程结构体变量加锁方法
在看到http-server代码,获取多线程结构体对象的成员加锁方法evutil_socket_t evconnlistener_get_fd(struct evconnlistener *lev){evutil_socket_t fd;LOCK(lev);fd = lev->ops->getfd(lev);UNLOCK(lev);return fd;}原创 2016-11-01 19:23:15 · 499 阅读 · 0 评论 -
libevent提取里面的多线程实现
#include #include #include #include #include #include #define EVTHREAD_WRITE 0x04/** A flag passed to a locking callback when the lock was allocated as a * read-write lock, and we want原创 2016-10-20 14:04:47 · 431 阅读 · 0 评论 -
使用 libevent 和 libev 提高网络应用性能
https://www.ibm.com/developerworks/cn/aix/library/au-libev/简介许多服务器部署(尤其是 web 服务器部署)面对的最大问题之一是必须能够处理大量连接。无论是通过构建基于云的服务来处理网络通信流,还是把应用程序分布在 IBM Amazon EC 实例上,还是为网站提供高性能组件,都需要能够处理大量并发连接。转载 2017-05-07 08:28:20 · 438 阅读 · 0 评论 -
libevent+多线程的服务器模型
最近在看memcached的源码,觉得它那种libevent+多线程的服务器模型真的很不错,我将这个模型封装成一个C++类,根据我的简单测试,这个模型的效率真的很不错,欢迎大家试用。这个类的使用方法很简单(缺点是不太灵活),只要派生一个类,根据需要重写以下这几个虚函数就行了://新建连接成功后,会调用该函数virtual void ConnectionEvent(Conn *conn转载 2017-05-07 15:37:57 · 1867 阅读 · 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, S转载 2017-05-22 12:18:36 · 1258 阅读 · 0 评论 -
利用libevent 和线程池实现高并发服务器的设计
主进程添加监听套接字的事件并进行事件循环,将连接描述符放入定义的数据结构中,并在主进程中进行写管道,触发子线程的读管道事件,然后从连接结构中获取连接描述符进行和客户端进行通信。其中主进程和子线程都有不同的基事件base. #include <stdio.h>#include <stdlib.h>#include <unistd.h>#inc...转载 2017-05-22 15:08:12 · 5050 阅读 · 3 评论 -
libevent多线程
利用libevent和多线程 实现多并发的服务器的设计。主进程监听连接的到来使用一个base,进行事件循环。每当 一个连接进来时,创建一个新的线程实现与客户端之间的通信,子线程建立一个base,进行事件循环客户端(多线程): 主线程->连接描述符(socket_fd = connectServer(ip, port);) -》创建子进程(init_read_event_th转载 2017-05-22 15:42:04 · 820 阅读 · 1 评论 -
epoll_wait被signal信号中断时的处理
libevent 用fd事件来通知epoll_wait,处理事件。epoll_wait在信号处理后,会返回-1 ,错误码为EINTR,直接return 0nginx用全局变量来通知进程,epoll_wait在信号处理后,会返回-1 ,错误码为EINTR,在主循环里处理事件...原创 2018-05-28 14:58:02 · 2897 阅读 · 0 评论