摘要: libevent的evbuffer之减少内存拷贝 evbuffer是块状数组的数据结构,既是一块块连续的内存链接起来的,evbuffer有许多有用的接口,这里只想对可以减少内存拷贝的接口做详细记录。 1.int evbuffer_reserve_space(struct evbuffer *buf, ev_ssize_t size, struct evbuffer_iovec *vec, int n_vecs); int evbuffer_commit_space(struct evbuffer *buf, struct evbuffer_iovec *vec, int n_vecs); .. 阅读全文
posted @ 2012-11-10 23:35 persistentsnail 阅读(2121) 评论(0) 推荐(0) 编辑
摘要: libevent的bufferevent libevent的bufferevent是在event的基础上自己维护了一个buffer,这意味着你的程序不再需要自己管理一个buffer。而且在windows上的异步IO不是“select()-like"接口,而是IOCP API,在一个socket已经准备好读写时并不会通知你的程序去从内核复制到用户内存(或者从内核复制到内核),而是在将数据从内核已经复制到用户内存(或反之)再通知你的程序。bufferevent API的使用刚好能满足这种情况,或者说在不支持IOCP的linux上能够模拟出这种功能。看下bufferevent的基本用法: 阅读全文
posted @ 2012-11-10 00:12 persistentsnail 阅读(1069) 评论(0) 推荐(0) 编辑