简介
ACE_Handle_Set是对select io复用中fd_set的封装
结构
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 namefrom 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;
ACE_Handle_Set_Iterator
遍历ACE_Handle_Set 的迭代器
handle_index_:表示第几位
word_num_:表示第几个word,一个word用32位表示