http://popozhu.github.io/page/7/ --- Libevent事件, libevent 机制分析.
libevent安装(Linux)
https://blog.csdn.net/pengshengli/article/details/93657384
1.官网:http://libevent.org/
github:https://github.com/libevent/libevent
也可直接使用命令下载:
wget https://github.com/libevent/libevent/releases/download/release-2.1.10-stable/libevent-2.1.10-stable.tar.gz
2.安装
$ ./configure
$ make
$ make verify # (optional)
$ sudo make install
如果configure的时候出现:bash: ./configure: Permission denied错误的话,使用以下命令
bash ./configure
安装完成后课查看libevent的库文件:
3.使用:
在cc编译的时候加-levent选项
4.libevent的使用步骤
要说明的是libevent并不是封装socket,而是封装了select/poll/epoll等,严格来讲不是简单的封装,其使用Reactor的设计模式。也就是说我们使用libevent编程时,需要自己创建socket,然后将fd填充到event_base,并注册回调函数(即事件回调),当反应堆检测到事件时会直接调用我们注册的回调函数,这就是所谓的事件驱动。通常编写代码的步骤为:
(1)创建socket
(2)创建事件集event_base
(3)创建event_new(注册回调函数)
(4)添加事件到事件集event_base
(5)进行事件检测,event_base_dispatch()/event_base_loop()
实例后面补~
————————————————————————————————————————————————————————————————————————————————————————————————————————————————
LINUX下libevent编译&&demo运行
https://blog.csdn.net/littlebeat123/article/details/74010877
编译&&安装
1、./configure --prefix=/opt/libevent ----------------- (制定配置安装路径,2019---1)
这一步是用来生成编译时用的makefile,其中,--prefix用来指定libevent的安装目录。
2、make 编译,我在编译的时候遇到如下报错:/root/libevent-2.1.8-stable/missing:行81: aclocal-1.15: 未找到命令
解决办法:
执行命令,autoreconf -ivf 让其自动配置一下源代码。
然后在make编译就没问题了。
3、make install 安装成功,可以看到 /opt/libevent下面已经有文件生成了。
编译:gcc test.c -o test_event -I /opt/libevent/include/ -L /opt/libevent/lib/ -levent --------------- (制定编译选项,2019---1)
注意:-I 是大写的 i 啊,不是小写的L,用来指定头文件的,-L则是用来指定引用库的位置的。
2、运行 ./test_event
报错:./test_event: error while loading shared libraries: libevent-2.1.so.6: cannot open shared object file: No such file or directory
没找到库,链接一下:ln -s /opt/libevent/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6 (创建链接)
再次运行,ok了。
OK,可以继续捣鼓这个libevent了。
————————————————————————————————————————————————————————
————————————————————————————————————————————————————————
levent分析
https://blog.csdn.net/weixin_30471065/article/details/97543020
levent分析 :
https://github.com/xjdrew/levent
lua concurrency library based on libev, similar with gevent