第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

posted @ 2016-12-16 17:25  lianhuaren  阅读(194)  评论(0编辑  收藏  举报