摘要: 最近在看memcached的源码,觉得它那种libevent+多线程的服务器模型(multi-reactor)真的很不错,我将这个模型封装成一个C++类,根据我的简单测试,这个模型的效率真的很不错,欢迎大家试用。这个类的使用方法很简单(缺点是不太灵活),只要派生一个类,根据需要重写以下这几个虚函数就行了:[cpp] view plaincopyprint?//新建连接成功后,会调用该函数virtualvoidConnectionEvent(Conn*conn){}//读取完数据后,会调用该函数virtualvoidReadEvent(Conn*conn){}//发送完成功后,会调用该函数(因为 阅读全文
posted @ 2013-08-03 21:38 孤火 阅读(1852) 评论(1) 推荐(0) 编辑
摘要: memcached,相信我们搞linux后端的农民工都知道!这里简单的分析一下memcached是如何处理大量并发的连接的。如题,memcached是个单进程程序,单进程多线程的程序(linuxer可能会会心一笑,这不就是多进程嘛)。memcached底层是用的 libevent来管理事件的,下面我们就来看看这个libevent的经典应用是如何运转的。其实一开始memcached是个正宗的单进程程序,其实 使用了异步技术后基本能把cpu和网卡的性能发挥到极限了(这种情况下硬是多线程反而会使程序性能下降),只不过后来随着多核cpu的普及,为了榨光 cpu的性能,引入多线程也是顺势而为。memca 阅读全文
posted @ 2013-08-03 21:07 孤火 阅读(559) 评论(0) 推荐(0) 编辑
摘要: 功能:主线程根据负载工作线程负载均衡算法,每隔一秒钟向特定的工作线程发送一条字符串信息,工作线程简单的把字符串信息打开出来。Makefileeventtest : eventtest.cgcc -Wall -g -levent -lpthread -o eventtest eventtest.c.PHONY : cleanclean :rm eventtest -feventtest.c#include #include #include #include #include #include #include typedef struct {pthread_t tid;struct event 阅读全文
posted @ 2013-08-03 20:50 孤火 阅读(667) 评论(0) 推荐(0) 编辑