簡介
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位表示