第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

时间: 2024-11-05 21:08:46

第3月第16天 fd_set 32 ACE_TP_Reactor的相关文章

八周三次课(1月31日) 10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具

八周三次课(1月31日)10.32 rsync通过服务同步10.33 rsync通过服务同步10.34 linux系统日志10.35 screen工具===============================================================================================================================================================================

16位,32位,64位机数据类型所占的字节数

数据类型 16位平台 32位平台 64位平台 char 1 1 1 short 2 2 2 int 2 4 4 long 4 4 8 long long ~ 8 8 指针 2 4 8 sizeof(a)时候求得是上述表格数值,(字节数)1字节=8bits 原文地址:https://www.cnblogs.com/wang-130213/p/8626058.html

C编程中的8位、16位、32位整数的分解与合并

在单片机的编程中对于8位.16位.32位整数的分解与合并用的比较多,今天做了简要学习,后面还需要加以总结. 练习在VC++6.0编程环境中进行,源程序:#include <stdio.h>#include "string.h" int main(int argc, char argv[]){ unsigned int Data_Uint32=0x12345678;unsigned short int Data_Uint16_1,Data_Uint16_2;unsigned

C# 字符串md5加密成16位和32位

#region md5加密 /// <summary> /// MD5 16位加密 加密后密码为小写 /// </summary> /// <param name="ConvertString"></param> /// <returns></returns> private string GetMd5Str16(string ConvertString) { try { using (MD5CryptoServi

判断16位和32位

#include <stdio.h> int main() {     int i = 0x7fff;     ++i;     printf("%d",i);     return 0; } 如果i大于0,则是32为的,小于0是16位的.

大学生在校“练摊” 半个月赚16万

现在的大学生想在校期间做点小生意创业的不少,条件也允许,就算创业不成功赚点零花钱,学点经验也是好的. 武汉科技大学建筑学专业2013级学生镇小龙每天都忙着盘点各种货物预订和到货情况.去年开学季,他和他的小伙伴们抢夺新生入学商机,辗转多个高校售卖生活用品,在半个月里共获利16万元.今年,他带着自己的团队,做起来已经得心应手. 去年开学季,镇小龙和他的员工总共获利近16万.今年,镇小龙在黄家湖大学城附近,租用了8间附近村民的房屋作仓库,短租两个月,仓储费用共约10000元.镇小龙今年不仅做零销,还做

易语言-MD5加密16位和32位方法

取数据摘要 (到字节集 (文本))  这个取到的是32位的  取文本中间 (取数据摘要 (到字节集 (文本)), 9, 16)  这个取到的是16位的 原文地址:https://www.cnblogs.com/hongyuyingxiao/p/9630544.html

linux内核设计的艺术--从16位转向32位

上一篇讲到了将kernel模块加载到了内存的0x10000-0x10000+120KB处,接下来,将会执行setup.s中的代码了. 首先,setup要获取一系列系统硬件信息 mov ax,#INITSEG mov ds,ax //设置段地址 mov ah,#0x03 xor bh,bh int 0x10 //调用0x10中断获取屏幕光标位置 mov [0],dx //将屏幕光标保存至0x90000处 //调用0x15中断,获取内存信息保存至0x90002 mov ah,#0x88 int 0x

用C语言写一个程序,得出当前系统的整形数字长(16位,32位,64位)等,不能使用sizeof()

#include <iostream>#include <cmath>using namespace std; int main(){ int num = -1; unsigned int s = num;              //当前位级表示即为最大无符号数 cout << (int)log2(s)+1 << endl; //第一种 int intSize = 0; while(s != 0) { s = s >> 1; intSize