首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

libevent(一)

内部事件机制完全独立于暴露的外部接口,因此当Libevent需要更新时,不需要重新设计外部应用程序。因此,Libevent提供了跨平台的开发能力。Libevent支持多线程程序。...每个使用Libevent的程序必须包含,传递-levent给链接器。 在你调用Libevent的函数前,你需要安装这个库。...如果你要在多线程程序中使用Libevent,你需要初始化多线程支持--调用evthread_use_pthreads() or evthread_use_windows_threads()。...接下来,你需要创建一个event_base 结构,使用event_base_new() or event_base_new_with_config()。...最后,你可以使用event_base_dispatch去循环处理事件。你也可以使用event_base_loop() 去做更灵活的控制,比如用非阻塞的方式去调用loop。

43820
您找到你想要的搜索结果了吗?
是的
没有找到

Windows Visual Studio 使用 libevent

所以决定研究一下如何在 Windows Visual Studio 环境下使用 libevent 库,这样学习效率会高很多。...下载 libevent 官网地址:http://libevent.org/ 直接下载最新版本即可: 图片 编译 libevent 库 首先将下载好的 libevent-2.0.22-stable.tar.gz...图片 使用 Visual Studio 建立一个 Win32 控制台空项目,建立完成后首先在项目目录下新建两个文件夹,lib 和 inc,用来存放 .lib 库文件和 .h 头文件(熟悉的人目录结构你可以自己规划...; } else { // 获取当前使用了哪种 I/O 模型,Windows 下仅显示 win32 printf("Using Libevent...(base)); } WSACleanup(); event_base_free(base); return 0; } 如果你得到如下返回,那么证明你环境已经可以正常使用

24330

libevent源码深度剖析三 libevent基本使用场景和事件流程

系列目录 (1)libevent源码深度剖析一 序 (2)libevent源码深度剖析二 Reactor模式 (3)libevent源码深度剖析三 libevent基本使用场景和事件流程 (4)libevent...源码深度剖析四 libevent源代码文件组织 (5)libevent源码深度剖析五 libevent的核心:事件event (6)libevent源码深度剖析六 初见事件处理框架 (7)libevent...我觉得从程序的基本使用场景和代码的整体处理流程入手是个不错的方法,至少从个人的经验上讲,用此方法分析libevent是比较有效的。...2.基本应用场景 基本应用场景也是使用libevnet的基本流程,下面来考虑一个最简单的场景,使用livevent设置定时器,应用程序只需要执行下面几个简单的步骤即可。...对于定时事件,libevent使用一个小根堆管理,key为超时时间;对于Signal和I/O事件,libevent将其放入到等待链表(wait list)中,这是一个双向链表结构; 3)程序调用event_base_dispatch

1.8K10

libevent介绍

但是使用者所丢过来的资料又不能保证在一次 read() 或 recv() 就有一行,于是要自己做 Buffering。实际上这三件事情在 libevent 都有 Library 处理掉了.   ...libevent 是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机 制。...著名的用于apache的php缓存库memcached据说也是libevent based,而且libevent使用上可以做到跨平台,如果你将要开发的应用程序需要支持以上所列出的平台中的两个以上,那么强烈建议你采用这个库...event_init() 表示初始化 libevent使用到的变数。...注:这段代码来自于网络,虽然很粗糙,但是对libevent使用方法已经说明的很清楚了.

1.5K40

libevent源码深度剖析十三 libevent信号处理注意点

系列目录 (1)libevent源码深度剖析一 序 (2)libevent源码深度剖析二 Reactor模式 (3)libevent源码深度剖析三 libevent基本使用场景和事件流程 (4)libevent...源码深度剖析四 libevent源代码文件组织 (5)libevent源码深度剖析五 libevent的核心:事件event (6)libevent源码深度剖析六 初见事件处理框架 (7)libevent...源码深度剖析七 事件主循环 (8)libevent源码深度剖析八 集成信号处理 (9)libevent源码深度剖析九 集成定时器事件 (10)libevent源码深度剖析十 支持I/O多路复用技术 (11...)libevent源码深度剖析十一 时间管理 (12)libevent源码深度剖析十二 让libevent支持多线程 (13)libevent源码深度剖析十三 libevent信号处理注意点 前面讲到了...memcached 就没有使用 libevent 提供的 signal 接口,而是直接使用系统提供的原生 API ,看起来这样更简洁。 libevent源码深度剖析全系列完。

64010

libevent源码深度剖析(五) libevent的核心:事件event

系列目录 (1)libevent源码深度剖析一 序 (2)libevent源码深度剖析二 Reactor模式 (3)libevent源码深度剖析三 libevent基本使用场景和事件流程 (4)libevent...都是双向链表节点指针;它们是libevent对不同事件类型和在不同的时期,对事件的管理时使用到的字段。...libevent使用双向链表保存所有注册的I/O和Signal事件 ev_next就是该I/O事件在链表中的位置;称此链表为“已注册事件链表”; 同样ev_signal_next就是signal事件在signal...有一个全局event_base指针current_base,默认情况下事件ev将被注册到current_base上,使用该函数可以指定不同的event_base; 如果一个进程中存在多个libevent...小结 本节讲述了libevent的核心event结构,以及libevent支持的事件类型和libevent对event的管理模型;接下来将会描述libevent的事件处理框架,以及其中使用的重要的结构体

1.1K30

libevent的基本安装

****libevent简介**** libevent是一个基于事件触发的网络库,它是轻量级并专注于网络,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue...等系统调用管理事件机制,支持多种I/O多路复用技术(epoll、poll、dev/poll、select和kqueue等),在不同的操作系统下,做了多路复用模型的抽象,可以选择使用不同的模型,通过事件函数提供服务...官网Alic传送 ---- ****环境**** ubuntu14.04 ---- ****libevent安装**** $sudo apt-get install libevent-dev 上面是采取源的自动安装方式...下载源码后cd到根目录 #配置安装目录,并非一定要在 /usr 下,默认就是/usr/share但必须保证 libevent 和 memcached 必须安装在同一个目录下 #可以不执行此句 $.

59550

libevent源码深度剖析十二 让libevent支持多线程

系列目录 (1)libevent源码深度剖析一 序 (2)libevent源码深度剖析二 Reactor模式 (3)libevent源码深度剖析三 libevent基本使用场景和事件流程 (4)libevent...本身不是多线程安全的,在多核的时代,如何能充分利用CPU的能力呢,这一节来说说如何在多线程环境中使用libevent,跟源代码并没有太大的关系,纯粹是使用上的技巧。...1.错误使用示例 在多核的CPU上只使用一个线程始终是对不起CPU的处理能力啊,那好吧,那就多创建几个线程,比如下面的简单服务器场景。...可是就在线程1注册事件时,主线程很可能也在操作事件,比如删除,修改,通过libevent的源代码也能看到,没有同步保护机制,问题麻烦了,看起来不能这样做啊,难道只能使用单线程不成!?...4.小节 本节更是libevent使用方面的技巧,讨论了一下如何让libevent支持多线程,以及几种支持多线程的机制,和memcached使用libevent的多线程模型。

1.7K21

libevent源码深度剖析四 libevent源代码文件组织

系列目录 (1)libevent源码深度剖析一 序 (2)libevent源码深度剖析二 Reactor模式 (3)libevent源码深度剖析三 libevent基本使用场景和事件流程 (4)libevent...源码深度剖析四 libevent源代码文件组织 (5)libevent源码深度剖析五 libevent的核心:事件event (6)libevent源码深度剖析六 初见事件处理框架 (7)libevent...源码深度剖析七 事件主循环 (8)libevent源码深度剖析八 集成信号处理 (9)libevent源码深度剖析九 集成定时器事件 (10)libevent源码深度剖析十 支持I/O多路复用技术 (11...)libevent源码深度剖析十一 时间管理 (12)libevent源码深度剖析十二 让libevent支持多线程 (13)libevent源码深度剖析十三 libevent信号处理注意点 1.前言...2.源代码组织结构 Libevent的源代码虽然都在一层文件夹下面,但是其代码分类还是相当清晰的,主要可分为头文件、内部使用的头文件、辅助功能函数、日志、libevent框架、对系统I/O多路复用机制的封装

91420
领券