首页 > 代码库 > 第3月第16天 fd_set 32 ACE_TP_Reactor

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

第3月第16天 fd_set 32 ACE_TP_Reactor