博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

08 2012 档案

摘要:我设计这个线程池的初衷是为了与socket对接的。线程池的实现千变万化,我得这个并不一定是最好的,但却是否和我心目中需求模型的。现把部分设计思路和代码贴出,以期抛砖引玉。个人比较喜欢搞开源,所以大家如果觉得有什么需要改善的地方,欢迎给予评论。思前想后,也没啥设计图能表达出设计思想,就把类图贴出来吧。类图设计如下:Command类是我们的业务类。这个类里只能存放简单的内置类型,这样方便与socket的直接传输。我定义了一个cmd_成员用于存放命令字,arg_用于存放业务的参数。这个参数可以使用分隔符来分隔各个参数。我设计的只是简单实现,如果有序列化操作了,完全不需要使用我这种方法啦。Thread 阅读全文

posted @ 2012-08-31 10:22 开源云 阅读(10105) 评论(6) 推荐(4) 编辑

摘要:一、extern "C"讲解extern "C"是使C++能够调用C写作的库文件的一个手段,如果要对编译器提示使用C的方式来处理函数的话,那么就要使用extern "C"来说明。__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码。main.cppextern void f1();int main(){ f1(); return 0;}a.cpp#include <stdio.h>void f1(){ printf("test\n");}makefileall: g+ 阅读全文

posted @ 2012-08-18 11:08 开源云 阅读(728) 评论(0) 推荐(0) 编辑

摘要:一般察看函数运行时堆栈的方法是使用GDB之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的。在头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈Function: int backtrace(void **buffer,intsize)该函数用与获取当前线程的调用堆栈,获取的信息将会被存放在buffer中,它是一个指针列表。参数 size用来指定buffer中可以保存多少个void* 元素。函数返回值是实际获取的指针个数,最大不超过size大小,在buffer中的指针 阅读全文

posted @ 2012-08-17 14:38 开源云 阅读(10029) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示