- 博客(6)
- 收藏
- 关注
转载 【一类你不得不面对的服务端-linux】C语言实现支持yield/resume的插件式网络框架demo...
说明:简单做了一个服务端框架demo,粗略实现一下自己的想法,和协程(coroutine)的理念基本相同,有这么几个核心设计要素是我希望通过代码展现出来的:1,程序性质是一个服务端框架,需要用户编写请求的解析/反序列化函数,之后请求将经过若干预先编写的插件进行处理。(PS:个人精力的关系,插件直接与源码一起编译,而不是.so)。2,框架支持插件异步化处理,即某个插件在处理某个请求时可以y...
2013-05-18 11:17:00
215
转载 【原创】 [ 探索epoll的内置Leader-Follower支持以及线程安全问题, epoll可以更高效! ]...
最近在探索借助epoll做为reactor,设计高效的服务端的方法.常见的基于epoll的编程方式主要为单线程的事件循环,用于一些非阻塞的业务逻辑开发是比较高效并且简单易懂的.但实际开发业务的时候,往往面临着查数据库,访问磁盘,通过网络访问其他主机的需求,耗时往往较长,所以单线程的epoll并不能轻松的适用,往往需要做一些额外的设计与构思才能得到解决....
2013-02-19 11:33:00
164
转载 【Jabberd2源码剖析系列 nad】
nad是jabberd2自创的xml存储结构, 它基于expat xml库实现, 提供了更加快捷方便操作xml文档的方法.nad的意思是not a dom, 意思就是使用自定义结构存储xml dom, 比dom更快更方便.先读一下nad.h中的说明:/** @file util/nad.h * @brief Not A DOM * @author Jer...
2012-11-20 16:06:00
200
转载 【Jabberd2源码剖析系列 xhash】
xhash是jabberd2的哈希表, 并提供了迭代器用于遍历xhash.解释一下结构体的命名,xht_struct意思是x hash tasble,xhn_struct意思是x hash node, 这样方便理解记忆.xhn_struct的成员变量顾名思义, 不赘述.xht_struct中, p是内存池, 负责node的分配等, zen是桶数组, free_lis...
2012-11-20 14:21:00
214
转载 【Jabberd2源码剖析系列 util (不包括nad, xhash, xdata, jid, config, stanza)】
xmpp使用util/pool作为内存池, 相比于常见的内存池模式, xmpp的pool使用了一种个性的设计: 一个pool为一个对象而生, 而对象随着pool的消亡而释放, 一个程序里可能有成百数千的pool, 每个pool管理一个小小的对象, 并且分配过的内存是不能重用的, 也没必要一点点的释放, 把整个pool销毁是唯一的释放方法.1, 数据结构:pool_clean...
2012-11-19 17:43:00
175
转载 【Jabberd2源码剖析系列 mio】
mio是一个xmpp的I/O复用事件库, 对开发者提供透明API进行开发, 而在API之下允许灵活使用不同的I/O复用作为底层实现. mio采用了大量的宏替换, 实现了 开发者API -> 底层实现 的解耦, 该解耦逻辑发生在预编译阶段, 而不是我们习惯的运行阶段解耦技巧. mio暴露给用户的API是固定不变的, 这些API的声明存在于mio.h中, 如下: ...
2012-11-19 16:16:00
194
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人