首页 > 代码库 > 第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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。