摘要: 在上一篇中已分析了memcached线程池的创建流程,由于上篇篇幅较长,因此将memcached线程池中线程的调度流程另立一篇。先让我们把目光转到主函数中,主线程在调用thread_init函数创建好线程池后,就开始创建监听套接字,memcached支持TCP,UDP,UNIX域套接字,因此相应的要创建三种监听套接字这里我们只分析TCP listening socket的创建(UDP与TCP的创建采用统一的接口),函数入口为:1 errno = 0;2 if (settings.port && server_sockets(settings.port, tcp_transp.. 阅读全文
posted @ 2012-07-10 18:54 Moon_Bird 阅读(3591) 评论(0) 推荐(1) 编辑
摘要: 已经个把月没有写长篇博文了,最近抽了点时间,将memcached源码分析系列文章的线程机制篇给整出来,在分析源码的过程中参考了网上的一些资源。该文主要集中于两个问题:(1)memcached线程池是如何创建的,(2)线程池中的线程又是如何进行调度的。一切从源码中找答案。memcached的线程池模型采用较典型的Master-Worker模型:(1)主线程负责监听客户端的建立连接请求,以及accept 连接,将连接好的套接字放入连接队列;(2)调度workers空闲线程来负责处理已经建立好的连接的读写等事件。1 关键数据抽象(1)memcached单个线程结构的封装 1 //memcached线 阅读全文
posted @ 2012-07-10 16:26 Moon_Bird 阅读(8507) 评论(0) 推荐(1) 编辑