|
下面是CMultipleHandles和一个基于Console的源码。
// MultipleHandles.h
// 作者: 黄瑞广 时间: 2004-02-06
// 说明: 本类不支持线程安全
class CMultipleHandles
{
private:
int m_nNumOfHandle;
public:
HANDLE m_arrayHandle[MAXIMUM_WAIT_OBJECTS];
...........
};
// MultipleHandles.cpp
#include "stdafx.h"
#include "MultipleHandles.h"
CMultipleHandles::CMultipleHandles()
{
Init();
}
void CMultipleHandles::Init()
{
m_nNumOfHandle = 0; // 句柄数为"0"
for (int i = 0; i < MAXIMUM_WAIT_OBJECTS; i++)
m_arrayHandle[i] = NULL; // NULL表示该句柄位可用
}
// 功能: 判断句柄槽位是否是空
// 返回值: TRUE, 空; FALSE, 不空
BOOL CMultipleHandles::IsEmpty()
{
if (m_nNumOfHandle == 0)
return TRUE;
return FALSE;
}
// 功能: 判断句柄槽位是否已满
// 返回值: TRUE, 已满; FALSE, 未满
BOOL CMultipleHandles::IsFull()
{
if (m_nNumOfHandle == MAXIMUM_WAIT_OBJECTS)
return TRUE;
return FALSE;
}
// 功能: 获得可用槽位的索引值
// 返回值: -1, 没有可用的槽位; 否则是空槽位的索引
int CMultipleHandles::GetFree()
{
int nIndex;
if (IsFull())
return -1; // 整个句柄槽没有可用的槽位, 返回-1
for (int i = 0; i < MAXIMUM_WAIT_OBJECTS; i++)
{
if (m_arrayHandle[i] == NULL)
{
[1] [2] [3] [4] 下一页 |