zoukankan      html  css  js  c++  java
  • 第3月第16天 fd_set 32 ACE_TP_Reactor

    1.

    #ifdef FD_SETSIZE
    #define    __DARWIN_FD_SETSIZE    FD_SETSIZE
    #else /* !FD_SETSIZE */
    #define    __DARWIN_FD_SETSIZE    1024
    #endif /* FD_SETSIZE */
    #define    __DARWIN_NBBY        8                /* bits in a byte */
    #define __DARWIN_NFDBITS    (sizeof(__int32_t) * __DARWIN_NBBY) /* bits per mask */
    #define    __DARWIN_howmany(x, y)    ((((x) % (y)) == 0) ? ((x) / (y)) : (((x) / (y)) + 1)) /* # y's == x bits? */
    
    __BEGIN_DECLS
    typedef    struct fd_set {
        __int32_t    fds_bits[__DARWIN_howmany(__DARWIN_FD_SETSIZE, __DARWIN_NFDBITS)];
    } fd_set;
    __END_DECLS

    http://www.cnblogs.com/scope-beyound/p/3628217.html

    2.

    其中 TP 即 Thread-Pool 的缩写。与 ACE_WFMO_Reactor 的完全多线程并行处理不同,TP_Reactor 仅实现了部分的并行,这是由于 select 系统调用本身不是多线程安全的,所以在侦测事件时必需保证单线程,但在分派事件时却可以使用多线程,为此 TP_Reactor 实现了一种称为 Leader-Follower 的线程模型:一组线程中,有一个线程充当 Leader 角色,负责侦测事件,其它线程处在空闲待命状态;当事件到达,Leader 线程开始分派事件,在此之前,它选取线程池中的一个线程充当 Leader 角色,而自己在分派完事件后,加入空闲线程池,成为 Follower 角色,如此循环往复,不断推动 Reactor 运行。

    http://ace.acejoy.com/forum.php?mod=viewthread&tid=5806

  • 相关阅读:
    EOS概念理解总结
    boost asio one client one thread
    EOS 数据签名与公匙验证代码用例
    EOS 智能合约编写(一)
    EOS多节点同步代码分析
    EOS 用户权限相关命令
    EOS 多主机多节点配置终极命令
    EOS多主机多节点环境配置
    ubuntu命令错误集
    java多线程中的调度策略
  • 原文地址:https://www.cnblogs.com/javastart/p/6187774.html
Copyright © 2011-2022 走看看