摘要: xmpp使用util/pool作为内存池, 相比于常见的内存池模式, xmpp的pool使用了一种个性的设计: 一个pool为一个对象而生, 而对象随着pool的消亡而释放, 一个程序里可能有成百数千的pool, 每个pool管理一个小小的对象, 并且分配过的内存是不能重用的, 也没必要一点点的释放, 把整个pool销毁是唯一的释放方法.1, 数据结构:pool_cleanup_t是内存的释放回调函数, 负责真正的free内存.pheap是存储内存块的结构体, 每个malloc返回的内存对应一个pheap, size表示malloc(size)的size, used表示使用了多少.pfree是 阅读全文
posted @ 2012-11-19 17:43 xmpp? 阅读(831) 评论(0) 推荐(0) 编辑
摘要: mio是一个xmpp的I/O复用事件库, 对开发者提供透明API进行开发, 而在API之下允许灵活使用不同的I/O复用作为底层实现. mio采用了大量的宏替换, 实现了 开发者API -> 底层实现 的解耦, 该解耦逻辑发生在预编译阶段, 而不是我们习惯的运行阶段解耦技巧. mio暴露给用户的API是固定不变的, 这些API的声明存在于mio.h中, 如下: 1, 描述符:typedef struct mio_fd_st{ int fd; } *mio_fd_t; 2, mio核心结构体: 内部看似采用了函数指针解耦, 但其实各个函数指针最终都指向了固定的函数, 并不是用来解... 阅读全文
posted @ 2012-11-19 16:16 xmpp? 阅读(772) 评论(0) 推荐(0) 编辑