2009年1月2日

最便捷、最强大、速度最快的C++序列化框架【二】

摘要: 项目地址:http://code.google.com/p/febird目前该框架(DataIO)仅支持二进制。想起序列化支持只需要一个宏DATA_IO_LOAD_SAVE/DATA_IO_LOAD_SAVE_V,对象成员基本上用“&”连接起来,这样,可以写一个简单的语法分析器,将成员序列化表达转化成字符串,然后进行语法分析,这样,就可以在不用改变客户代码的情况下,进行文本方式(如XML)的序列化了,比boost的要简单许多。如,目前的宏这样定义:#defineDATA_IO_LOAD_SAVE(Class,Members)/ templatevoidload(DataIO&d 阅读全文

posted @ 2009-01-02 14:24 能发波 阅读(226) 评论(0) 推荐(0)

Coroutine真的可以大幅提高效率吗?

摘要: 这段时间一直想用Coroutine来实现我的rpc中异步调用的分派。看了很多Coroutine的资料,感觉它比起线程切换,就是少了个内核调用,少了自动激活,以及一些内和支持的线程状态(errno,tls等)。在处理器状态的存储/恢复,堆栈的切换等方面的开销都是一样的。在x86这样的体系结构下,处理器的状态(寄存器状态)很少,就那么几个寄存器,存储/恢复起来很快。但是,象MIPS,甚至Itanium这样的体系结构,他们的寄存器很多,Itanium甚至有128个64位的寄存器,这样,光寄存器状态就要1024byte!存储/恢复的开销很大。有时也想,在没有Coroutine的普通函数调用中(不需要切 阅读全文

posted @ 2009-01-02 14:02 能发波 阅读(131) 评论(0) 推荐(0)

使用C++模板实现不需要IDL的RPC【二】

摘要: 项目地址:http://code.google.com/p/febirdIDL的数据定义由几个宏定义实现:RPC_DECLARE_MF(FunName, ArgList)声明函数,ArgList必须带括号BEGIN_RPC_REGISTER_MF_EX(ThisClass,ClassName)BEGIN_RPC_REGISTER_MF(ThisClass)开始注册函数EX后缀可以使用指定的名字作为类名称RPC_REGISTER_MF(FunName)注册一个函数END_RPC_REGISTER_MF()结束注册用起来很类似于微软MFC中的消息映射声明。实现上有过几次改动:初始完成l 每个Cli 阅读全文

posted @ 2009-01-02 14:00 能发波 阅读(311) 评论(0) 推荐(0)

导航