- 博客(12)
- 资源 (1)
- 收藏
- 关注
转载 Libevent参考手册:连接侦听器: 接受 TCP 连接(八)
Evconnlistener 机制为您提供了侦听和接受传入的 TCP 连接的方法。这一节中的所有函数与类型都是在event2/listener.h中声明。他们首次出现在 Libevent 2.0.2-alpha,除非另有说明。创建或释放 evconnlistener接口struct evconnlistener *evconnlistener_new(struct even
2014-08-17 01:32:36 701
转载 Libevent参考手册:Evbuffers用于缓冲IO的实用工具(七)
Libevent的evbuffer功能通过实现一个字节队列,在队列末尾添加数据,在队列头移除数据。Evbuffers 是通常用来做缓冲网络 IO 的"缓冲区"部分。他们将不会提供安排 IO 或IO准备就绪时的触发等功能: 而这些功能是bufferevents应该做的。本章中的函数声明都在event2/buffer.h 中,除非另有说明。创建或释放 evbuffer接口struc
2014-08-17 01:32:11 909
转载 libevent参考手册:bufferevent:概念和入门(六)
很多时候,除了响应事件之外,应用还希望做一定的数据缓冲。比如说,写入数据的时候,通常的运行模式是:l 决定要向连接写入一些数据,把数据放入到缓冲区中。l 等待连接可以写入。l 写入尽量多的数据。l 记住写入了多少数据,如果还有更多数据要写入,等待连接再次可以写入。这种缓冲IO模式很通用,libevent为此提供了一种通用机制,即bufferevent。buffereve
2014-08-17 01:29:29 2285
转载 libevent参考手册:辅助类型和函数(五)
定义了很多在实现可移植应用时有用的函数,libevent内部也使用这些类型和函数。1 基本类型1.1 evutil_socket_t在除Windows之外的大多数地方,套接字是个整数,操作系统按照数值次序进行处理。然而,使用Windows套接字API时,socket具有类型SOCKET,它实际上是个类似指针的句柄,收到这个句柄的次序是未定义的。在Windows中,libevent定义e
2014-08-17 01:25:50 602
转载 libevent参考手册:与事件一起工作(四)
libevent的基本操作单元是事件。每个事件代表一组条件的集合,这些条件包括:l 文件描述符已经就绪,可以读取或者写入l 文件描述符变为就绪状态,可以读取或者写入(仅对于边沿触发IO)l 超时事件l 发生某信号l 用户触发事件所有事件具有相似的生命周期。调用libevent函数设置事件并且关联到event_base之后,事件进入“已初始化(initialized
2014-08-17 01:24:09 461
转载 libevent参考手册:创建event_base(二)
使用libevent函数之前需要分配一个或者多个event_base结构体。每个event_base结构体持有一个事件集合,可以检测以确定哪个事件是激活的。如果设置event_base使用锁,则可以安全地在多个线程中访问它。然而,其事件循环只能运行在一个线程中。如果需要用多个线程检测IO,则需要为每个线程使用一个event_base。Tip: [libevent的未来版本可能有event_
2014-08-17 01:22:43 782
转载 Libevent参考手册:与事件循环一起工作(三)
1 运行循环一旦有了一个已经注册了某些事件的event_base(关于如何创建和注册事件请看下一节),就需要让libevent等待事件并且通知事件的发生。接口#define EVLOOP_ONCE 0x01#define EVLOOP_NONBLOCK 0x02 int event_base_loop(struct event_base *base, int f
2014-08-17 01:21:46 518
转载 使用Libevent的快速可移植非阻塞网络编程:异步IO简介
大多数程序员从阻塞IO调用开始学习。如果调用在操作完成之前,或者在足够的时间已经过去使得网络堆栈放弃操作之前,不会返回,那么这个IO就是同步的。比如说,在TCP连接上调用connect()时,操作系统将一个SYN分组排队到TCP连接的另一端主机中。在收到来自对方主机的SYN ACK分组之前,或者在超时而决定放弃操作之前,控制不会返回到应用程序。这里有一个使用阻塞网络调用的简单客户端示例。它打开
2014-08-17 01:18:53 837
转载 Libevent参考手册:设置libevent(二)
4 锁和线程编写多线程程序的时候,在多个线程中同时访问同样的数据并不总是安全的。libevent的结构体在多线程下通常有三种工作方式:² 某些结构体内在地是单线程的:同时在多个线程中使用它们总是不安全的。² 某些结构体具有可选的锁:可以告知libevent是否需要在多个线程中使用每个对象。² 某些结构体总是锁定的:如果libevent在支持锁的配置下运
2014-08-17 01:17:58 563
转载 Libevent参考手册:设置libevent(一)
#define EVENT_LOG_DEBUG 0#define EVENT_LOG_MSG 1#define EVENT_LOG_WARN 2#define EVENT_LOG_ERR 3#define _EVENT_LOG_DEBUG EVENT_LOG_DEBUG#define _EVENT_LOG_MSG EVENT_LOG_MSG#define _EVE
2014-08-16 21:36:58 659
转载 Libevent参考手册:前言
1 从一万英尺外看LibeventLibevent是用于编写高速可移植非阻塞IO应用的库,其设计目标是:v 可移植性:使用libevent编写的程序应该可以在libevent支持的所有平台上工作。即使没有好的方式进行非阻塞IO,libevent也应该支持一般的方式,让程序可以在受限的环境中运行。v 速度:libevent尝试使用每个平台上最高速的非阻塞IO实现,并且不引入
2014-08-16 21:26:44 477
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人