libevent个人理解】的更多相关文章

1.利用了前置声明来在c语言的基础上进行封装操作.即在include目录下防止event.h等头文件,在这些头文件中只暴露struct的声明却不暴露其定义,对于如event_base等结构的操作均使用封装的函数进行,而这些封装的函数则定义在event.c中,event.c会包含event.h和event-internal.h,带有internal后缀的头文件才包含了这些结构体的实际定义.这样保证了外部操作不会污染内部结构体的内部数据,实现了封装的效果. 2.Libevent支持多种I/O多路复用…
time-test例子是libevent自带的一个例子,通过libevent提供的定时事件来实现,间隔固定时间打印的功能. /* * gcc -g -o time-test time-test.c -levent_core */ #include <sys/types.h> #include <event2/event-config.h> #include <sys/stat.h> #include <unistd.h> #include <time.…
struct bufferevent定义在文件bufferevent_struct.h中. /** Shared implementation of a bufferevent. This type is exposed only because it was exposed in previous versions, and some people's code may rely on manipulating it. Otherwise, you should really not rely…
SMSS是一个由我个人发起的开源项目,目的是建立一套轻量化,高可用,高安全和方便扩展的业务支撑框架.SMSS面向TCP/IP层开发,适合扩展上层业务接口.数据结构传输序列化通过Protobuf实现.传输过程中的数据经过OpenSSL加密再由接收端进行解密,文件传输也需要由发送方的秘钥首先做签名再由接收方验签.核心功能完全不需要DB支撑,降低学习.开发和部署的难度.客户端使用Electron,也足够简单和保持跨平台特性.另一个方面,我相信对于每一个曾经心怀梦想进入IT行业的人来说,能够创建属于自己…
可移植性: 使用 LibEvent 编写的程序应该在 LibEvent 支持跨越的所有平台上工作,即使没有更好的方法来处理. 非阻塞式IO:LibEvent也应该支持一般的方法使程序可以运行在某些限制的环境中. 速度: LibEvent 试图在每一个平台实现最快的非阻塞式 IO,而不会引入太多的额外开销.  可扩展性: LibEvent 设计为即使在成千上万的 socket 情况下也能良好工作.  方便: 无论在什么情况下,用 LibEvent 来编写程序最自然的方式都应该是稳定可靠的. L…
Libevent 是一个用C语言编写的.轻量级的开源高性能网络库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,不如 ACE 那么臃肿庞大:源代码相当精炼.易读:跨平台,支持 Windows. Linux. *BSD 和 Mac Os:支持多种 I/O 多路复用技术, epoll. poll. dev/poll. select 和 kqueue 等:支持 I/O,定时器和信号等事件:注册事件优先级. Libevent 已经被广泛的应用,作为底层的网络库:…
http-server例子是libevent提供的一个简单web服务器,实现了对静态网页的处理功能. /* * gcc -g -o http-server http-server.c -levent */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/s…
listener是libevent封装的一个方便生成监听者的一组结构和函数,其中包括: /* * Copyright (c) 2000-2007 Niels Provos <provos@citi.umich.edu> * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson * * Redistribution and use in source and binary forms, with or without * modifica…
转自:http://blog.csdn.net/feitianxuxue/article/details/9386843 处理大并发之五 使用libevent利器bufferevent 首先来翻译一段文章 你可能注意到随着我们代码变得越来越高效,程序也变得更加复杂.当我们产生一个进程的时候,我们没有必要为每一个链接管理一个buffer,我们只需要每个处理独立栈分配缓冲区就可以了.在读和写的时候,我们不必明确的跟踪每一个socket,这在我们的代码里是一个暗示,我们没有必要定义一个结构体去跟踪每一…
libevent源码分析 转自:http://www.cnblogs.com/hustcat/archive/2010/08/31/1814022.html 这两天没事,看了一下Memcached和libevent的源码,做个小总结. 1.入门 1.1.概述Libevent是一个用于开发可扩展性网络服务器的基于事件驱动(event-driven)模型的网络库.Libevent有几个显著的亮点: (1)事件驱动(event-driven),高性能:(2)轻量级,专注于网络,不如 ACE 那么臃肿庞…