ACE之ACE_Handle_Set

简介

ACE_Handle_Set是对select io复用中fd_set的封装

结构

ACE_Handle_Set
- int size_
- fd_set mask_
- ACE_HANDLE max_handle_
+void reset(void)
+int is_set(ACE_HANDLE handle)
+void set_bit(ACE_HANDLE handle)
+void clr_bit(ACE_HANDLE handle)
+int num_set(void)
+ACE_HANDLE max_set(void)
+void sync(ACE_HANDLE max)
+operator fd_set *()
+fd_set *fdset(void)
-void set_max(ACE_HANDLE max)
-static int count_bits(u_long n)

reset:将max_handle_设置为ACE_INVALID_HANDLE,同时将mask_清空(使用FD_ZERO)
is_set:判断handle是否在mask_的fd集合中
set_bit:将handle添加到mask_中,同时更新size_和max_handle_
clr_bit:将handle从mask_中清除,如果handle为最大的handle,则调用set_max更新max_handle_
num_set:获取当前集合中fd的个数,即size_
max_set :获取当前最大的句柄,即max_hanlde_
sync:重新计算更新size_和max_handle_

linux下fd_set定义为

# define FD_SETSIZE 1024
typedef long int __fd_mask;
/* fd_set for select and pselect.  */
typedef struct
  {
    /* XPG4.2 requires this member name.  Otherwise avoid the name
       from the global namespace.  */
#ifdef __USE_XOPEN
    __fd_mask fds_bits[__FD_SETSIZE / __NFDBITS];
# define __FDS_BITS(set) ((set)->fds_bits)
#else
    __fd_mask __fds_bits[__FD_SETSIZE / __NFDBITS];
# define __FDS_BITS(set) ((set)->__fds_bits)
#endif
  } fd_set;
typedef __fd_mask fd_mask;

相关推荐

  1. ACEACE_Copy_Disabled

    2024-07-14 13:32:03       28 阅读
  2. ACEACE_Time_Value

    2024-07-14 13:32:03       23 阅读
  3. ACEACE_Handle_Set

    2024-07-14 13:32:03       20 阅读
  4. ACEsocket

    2024-07-14 13:32:03       32 阅读
  5. ACE定时器队列类

    2024-07-14 13:32:03       31 阅读
  6. ACEAcceptor-Connector框架

    2024-07-14 13:32:03       20 阅读
  7. AIStable Diffusion

    2024-07-14 13:32:03       36 阅读
  8. AILambda index

    2024-07-14 13:32:03       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 13:32:03       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 13:32:03       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 13:32:03       57 阅读
  4. Python语言-面向对象

    2024-07-14 13:32:03       68 阅读

热门阅读

  1. 微服务有哪些组件?

    2024-07-14 13:32:03       18 阅读
  2. LVM调整VG和PV

    2024-07-14 13:32:03       23 阅读
  3. docker部署sentinel

    2024-07-14 13:32:03       20 阅读
  4. 在Spring Boot中集成分布式日志系统

    2024-07-14 13:32:03       31 阅读
  5. PHP FTP: A Comprehensive Guide

    2024-07-14 13:32:03       24 阅读
  6. 深入解析std::string的设计哲学【C++、STL库】

    2024-07-14 13:32:03       20 阅读
  7. 常用几种远程控制协议总结(telnet,rlogin,ssh,rfb,rdp)

    2024-07-14 13:32:03       18 阅读
  8. Rockchip RK3588 - 从零开始制作recovery系统

    2024-07-14 13:32:03       20 阅读
  9. 护网HW面试—apache&iis&nginx中间件解析漏洞篇

    2024-07-14 13:32:03       28 阅读
  10. 响应状态码

    2024-07-14 13:32:03       23 阅读
  11. python生成器与迭代器

    2024-07-14 13:32:03       27 阅读
  12. 导航守卫都有哪些?有什么用?

    2024-07-14 13:32:03       25 阅读
  13. 算法刷题笔记 最大异或对(详细注释的C++实现)

    2024-07-14 13:32:03       22 阅读