摘要: 发布一个源创的linux C++异步网络框架, 基于工作需求,偏重工程实践。 开发者不需关心 连接,监听,以及底层I/O,只需关注业务自身,这是网络框架的目标。内置的唤醒接口可以轻松将框架扩展至多线程工作模式:https://code.csdn.net/qq120848369/ez_poll项目介绍这是C++实现的一个异步网络开发库, 只能够在linux系统下工作.开发的初衷是维护一个自实现的, 满足工作需求, 符合工程实践的网络开发库, 可以快速安全的开发业务代码.功能摘要1.基于epoll作为底层实现,做了fd层以及socket层两级封装,通用性与便捷性并存.2.在socket层为使用者屏阅读全文
posted @ 2013-10-24 16:00 cppisnotbad 阅读(1386) 评论(4) 编辑
摘要: 今天valgrind 排查一下程序里的坑, 结果发现有几处未初始化的警告, 看了看代码, 是struct epoll_event结构体, 实际上根本没有问题, 只是valgrind不理解上下文的误判. 为了清理valgrind报错, 我就直接给struct epoll_event[64] = {0}; , 这样就消掉了错误, 可是接下来Profile却惊人的悲剧了. 我发现改了之后的代码CPU消耗是原来的2倍, profile里表明 = {0}最终被编译器转化成了memset, 我开的可是gcc -O2, 这算啥事. 总之, 慎用, 尤其别用在关键代码路径上, 并且不要用在较大的...阅读全文
posted @ 2013-08-10 17:01 cppisnotbad 阅读(411) 评论(0) 编辑
摘要: 在做服务端开发的时候,对于来自客户端的请求以及返回客户端的应答都需要使用一段内存来缓冲数据,传统做法就是定长缓冲区,像这样: char readbuf[4096]; char writebuf[4096]; 在你确定单个请求极限大小的情况下, 上面的定义也并不合理, 比如网络状况极差的情况下, writebuf的容量可能无法容纳待送出的应答, 这种情况只能无奈的断掉用户连接, 这并不合理. 于是, 一个改进的方法:char *readbuf;char *writebuf; 当缓冲区满, 我们通过realloc扩容, 保证总是能装得下数据, 上面的问题算是解决了. 然而, 将...阅读全文
posted @ 2013-08-07 21:28 cppisnotbad 阅读(122) 评论(0) 编辑
摘要: 初窥C++11的一点感受阅读全文
posted @ 2013-08-06 20:37 cppisnotbad 阅读(218) 评论(0) 编辑
摘要: 讲解bind+function与多态抽象的比较阅读全文
posted @ 2013-08-05 23:17 cppisnotbad 阅读(459) 评论(0) 编辑
摘要: 博客会记录工作中遇到的问题啊, 或者有价值的技术之类的, 也扯点生活上的思考, 希望对大家能有点帮助.阅读全文
posted @ 2013-08-04 20:31 cppisnotbad 阅读(33) 评论(0) 编辑