zoukankan      html  css  js  c++  java
  • beanstalk源码剖析——客户连接管理

    beanstalk把监听socket加入了epoll,当客户端有连接时,在主循环sockmain中通过处理epoll事件完成对连接的处理。

    1. 客户端连接处理代码

    通过前面对主循环的分析可以看出,监听socket的回调处理函数为srvaccept(见如下函数)。

    通过分析h_accept可以看出,客户端连接的处理包括三个步骤:

    a.建立连接socket,并将连接设置为非阻塞;

    b.创建连接管理对象,

    c.将和客户端的连接加入epoll

    连接处理

    2. 客户端连接管理

    每一个连接抽象为如下结构。

    连接抽象

    注意这里的连接socket和监听socket都抽象为统一的Socket类型,两者的差别是属性值。

    监听socket的回调参数是Server,回调函数是h_accept,而连接socket的回调参数是Conn,回调函数是prothandle。

  • 相关阅读:
    在LINQTOSQL中实现“级联删除”的方法
    “BindingNavigator”如何在删除前弹出确认框?
    OOP设计思考——究竟是继承自普通类,还是继承自抽象类?
    ASP.NET控件为什么无法使用结构?
    如何消除Web自定义控件的“自生成”复合属性的冗余类名称?
    用C#动态输出js单引号问题
    关于ready和load方法作用于不同情况下的比较
    关于CodeSign error : Certificate identity 'iPhone Distribution *** : ...问题
    [iOS]Xcode4/iOS5调试UncaughtException崩溃First throw call stack不打印方法名的解决方案
    Lion版本Mac OS下查看iPhone Simulator目录
  • 原文地址:https://www.cnblogs.com/blockcipher/p/2914556.html
Copyright © 2011-2022 走看看