libevent

Libevent 定时器

谁说胖子不能爱 提交于 2020-01-14 04:43:46
先摘一点网上的介绍 libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。著名分布式缓存 软件 memcached也是libevent based,而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计,似乎也有着非凡的性能。 接着我们先直接看一个例子,该例子每隔几秒输出一个句子 #include <iostream> #include <event.h> #include <ctime> using namespace std; void cb(evutil_socket_t fd, short what, void *arg) { cout<<"event ocurrence every 2 seconds."<<endl; } int main() { timeval two_sec = {2, 0}; event_base *base = event_base_new(); event *timeout = event_new(base, -1, EV_PERSIST|EV_TIMEOUT, cb, NULL); event_add(timeout, &two_sec); event_base_dispatch(base);

libevent中的Timer使用

穿精又带淫゛_ 提交于 2020-01-13 05:18:37
#include <stdio.h> #include <iostream> // libevent头文件 #include <event.h> #include "tool.h" #include "header.h" static struct event tickEvt; static struct event_base *baseEvt; void PrintTime() { struct timeval timer; gettimeofday(&timer, NULL); volatile uint current_time = (uint)(timer.tv_sec); PRINT("current_time:%d", current_time); } // 定时事件回调函数 void onTime(int sock, short event, void *arg) { PrintTime(); struct timeval tv = {.tv_sec = 1, .tv_usec = 0 }; // 重新添加定时事件(定时事件触发后默认自动删除) event_add((struct event*)arg, &tv); } void startEvt() { // 初始化 event_init(); struct event evTime; // 设置定时事件

Libevent初探

℡╲_俬逩灬. 提交于 2020-01-12 17:02:08
  Libevent 是一个用C语言编写的、轻量级的开源高性能网络库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,不如 ACE 那么臃肿庞大;源代码相当精炼、易读;跨平台,支持 Windows、 Linux、 *BSD 和 Mac Os;支持多种 I/O 多路复用技术, epoll、 poll、 dev/poll、 select 和 kqueue 等;支持 I/O,定时器和信号等事件;注册事件优先级。   Libevent 已经被广泛的应用,作为底层的网络库;比如 memcached、 Vomit、 Nylon、 Netchat等等。Libevent之于C语言网络编程,类似于Nettty之于Java Web编程。学习Netty的小伙伴,不防看下Libevent的实现,会加深对Netty框架的理解~   Libevent的安装教程网上较多,LZ在此就不再赘述,下面直接来点干货-Libevent如何使用。 检查Libevent支持的IO复用方法   Libevent作为一个高性能网络库,内部封装了多种IO复用技术,如果想看下Libevent在当前系统下支持哪些IO复用技术呢? int main(int argc, char **argv) { // 版本信息 cout << event_get_version() << endl; //

libevent

我的梦境 提交于 2020-01-12 08:18:40
Libevent 是一个用C语言编写的、轻量级的开源高性能网络库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,不如 ACE 那么臃肿庞大;源代码相当精炼、易读;跨平台,支持 Windows、 Linux、 *BSD 和 Mac Os;支持多种 I/O 多路复用技术, epoll、 poll、 dev/poll、 select 和 kqueue 等;支持 I/O,定时器和信号等事件;注册事件优先级。 Libevent 已经被广泛的应用,作为底层的网络库;比如 memcached、 Vomit、 Nylon、 Netchat等等。 1. 介绍 libevent是一个用来开发可扩展的网络服务器的事件通知函数库。当一个文件描述符上的特定事件发生或是一个超时时间到达后,libevent API提供一种执行回调函数的机制。而且,libevent还支持基于信号或定期超时的回调功能。 libevent旨在替换在原有事件驱动网络服务器事件循环而设计的。应用程序仅仅需要调用event_dispatch(),然后动态地添加或是移除事件就可以了,而不需要改变原有的事件循环。 目前,libevent支持/dev/poll,kqueue(2),select(2),poll(2)和epoll(4)等高并发网络编程模型。而它对实时信号的支持正处于实验性阶段

libevent (二) 接收TCP连接

半世苍凉 提交于 2020-01-10 07:46:06
libevent 接收TCP连接 Evconnlistener 机制为您提供了侦听和接受传入的 TCP 连接的方法。下面的函数全部包含在`<event2/listener.h>`中。 evconnlistener 创建监听对象 struct evconnlistener *evconnlistener_new(struct event_base *base,evconnlistener_cb cb, void *ptr, unsigned flags, int backlog,evutil_socket_t fd); struct evconnlistener *evconnlistener_new_bind(struct event_base *base,evconnlistener_cb cb, void *ptr, unsigned flags, int backlog,const struct sockaddr *sa, int socklen); void evconnlistener_free(struct evconnlistener *lev); 两个函数都会申请空间并返回一个新的连接对象`evconnlistener`,其中第一个函数需要自己绑定套接字,而第二个函数会自动绑定套接字。`evconnlistener`根据`event_base`来判断TCP连接请求

libevent中的bufferevent原理

你离开我真会死。 提交于 2020-01-10 03:27:14
以前的文章看过缓冲区buffer了,libevent用bufferevent来负责管理缓冲区与buffer读写事件。 今天就带大家看下evbuffer.c,使用bufferevent处理事件的数据,是buffer和event的综合。在最后用一个稍微综合的例子看下使用bufferevent的整个流程。   首先依旧看下bufferevent的结构。结构很清晰。源码版本1.4.14。    1 struct bufferevent { 2 struct event_base *ev_base; 3 4 //读事件 5 struct event ev_read; 6 //写事件 7 struct event ev_write; 8 //读缓冲区,输入缓冲 9 struct evbuffer *input; 10 //写缓冲区,输出缓冲 11 struct evbuffer *output; 12 13 //读水位 14 struct event_watermark wm_read; 15 //写水位 16 struct event_watermark wm_write; 17 18 //发生读触发用户设置的回调 19 evbuffercb readcb; 20 //发生写触发用户设置的回调 21 evbuffercb writecb; 22 //发生错误触发用户设置的回调 23

Ubuntu安装libevent

旧街凉风 提交于 2020-01-08 21:38:39
背景: 版本: libevent 2.1.6beta linux下: 按照github官方做法: $ sudo apt-get install openssl $ mkdir build && cd build $ cmake .. # Default to Unix Makefiles. $ make $ make verify # (optional) $ make install 老版本: $ tar zxvf libevent-1.2.tar.gz $ cd libevent-1.2 $ ./configure –prefix=/usr $ make $ make install 也可采用: apt-cache search libevent apt-get install libevent-dev 注意: linux下用qtcreator进行编程的时候注意点 在安装之后,利用Qtcreator进行项目管理的时候,需要在pro文件中添加如下: LIBS += -levent 正如在gcc中编译的时候,添加如下: gcc -o basic basic.c -levent 来源: https://www.cnblogs.com/willaty/p/8022039.html

安装libevent

こ雲淡風輕ζ 提交于 2020-01-08 21:34:10
ls -al /usr/lib | grep libevent 查看是否已经安装libevent库 上面这个压缩包是libevent的源码包,将它拷贝到linux的/tmp目录下(/tmp用来存放临时的文件) su 暂时获取root权限,后面的make install需要root权限 cd /tmp 进入到压缩包所在目录 tar –zxvf libevent-2.0.19-stable.tar.gz (将压缩包解压在当前目录下) cd libevent-2.0.19-stable/ (进入到解压出来的文件目录) ./configure –-prefix=/usr (脚本配置工具,源码安装的第一步,检查包的依赖,配置软件安装环境,选项 --prefix=PEWFIX: 重新安置他的结构独立部分 ) make (它从makefile中读取指令,然后编译) make install (需要有gcc,这条命令来进行安装) 测试libevent是否成功: ls -al /usr/lib | grep libevent 来源: https://www.cnblogs.com/hanhuihanhui/p/8616009.html

memcached内存数据库——部署及操作

此生再无相见时 提交于 2020-01-08 01:56:53
概述  Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。 特点 1、协议简单; 2、基于libevent的事件处理; 3、内置内存存储方式; 4、memcached不互相通信的分布式。 存储方式 为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。 实验环境 memcached服务器 192.168.13.128 (memcached-1.5.6.tar.gz、libevent-2.1.8-stable.tar.gz) memcache客户端 192.168.13.129 (memcache-2.2.7.tgz 、LAMP) 1,部署memcached服务器 [root

memcached缓存服务器的安装

ε祈祈猫儿з 提交于 2020-01-06 01:42:05
一、memcached 的编译安装 准备: Memcached下载地址: http://www.danga.com/memcached/ libevent下载地址: http://monkey.org/~provos/libevent/ 安装步骤: 1. 下载libevent & memcached 源码包 libevent-1.3.tar.gz memcached-1.2.2.tar.gz 2. 解压缩 libevent-1.3.tar.gz ,编译安装 # tar zxvf libevent-1.3.tar.gz # cd libevent-1.3 # ./configure --prefix=/usr/local/libevent # make ; make install 3. 解压缩 memcached-1.2.2.tar.gz, 编译安装 # tar zxvf memcached-1.2.2.tar.gz # cd memcached-1.2.2 # ./configure --prefix=/usr/local/memchached --with-libevent=/usr/local/libevent # make;make install 4. 作软连接,否则运行memcached的时候将找不到libevent模块 # ln -s /usr/local