• 第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

  • 相关阅读:
    证明三个简单数学问题~(≧▽≦)/~啦啦啦
    计算时间复杂度
    字符三角形(循环做法)
    luogu Peter的烟
    c++一本通1000
    luogu最长连号
    luogu子数整数
    luogu三角函数
    (因更改文件夹造成)anaconda prompt 提示系统找不到指定的路径
    echarts之树形图改变节点之间连线颜色以及结点的颜色
  • 原文地址:https://www.cnblogs.com/javastart/p/6187774.html
Copyright © 2020-2023  润新知