跑道的矩形;
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·218·
}HORSE, *LPHORSE;
(3)设置全局变量
定义Mutex 句柄和名称的全局变量,代码如下:
// Mutex 对象的名称
char g_strRNcom[64] = "RedHorse";
char g_strGNcom[64] = "GreenHorse";
char g_strBNcom[64] = "BlueHorse";
// Mutex 对象的句柄
HANDLE g_hRMutex;
HANDLE g_hGMutex;
HANDLE g_hBMutex;
(4)添加成员变量
为CRacingDlg 添加3 个赛马信息的成员变量,包括红色、绿色、蓝色3 匹马。添加3
个线程句柄的成员变量,以及一个线程是否暂停的成员变量,代码如下:
// 定义红, 绿, 蓝3 匹马
HORSE m_RedHorse;
HORSE m_GreenHorse;
HORSE m_BlueHorse;
// 定义红, 绿, 蓝3 匹马各自线程的句柄
HANDLE m_hRed;
HANDLE m_hGreen;
HANDLE m_hBlue;
// 是否暂停状态
BOOL m_bPaused;
为控件添加成员变量,代码如下:
// 设置红马的速度
CSliderCtrl m_BSpeed;
// 设置绿马的速度
CSliderCtrl m_GSpeed;
// 设置蓝马的速度
CSliderCtrl m_RSpeed;
// 跑道矩形
CStatic m_RacingBox;
(5)初始化信号量
为CRacingDlg 添加初始化函数InitMutexes,用来创建Mutex 对象,代码如下:
枫叶文学网www.fywxw.com
第9 章 多线程
·219·
BOOL CRacingDlg::InitMutexes()
{
// 初始化红马的Mutex
g_hRMutex = CreateMutex(NULL, FALSE, g_strRNcom);
if(g_hRMutex == NULL)
{
return FALSE;
}
// 初始化绿马的Mutex
g_hGMutex = CreateMutex(NULL, FALSE, g_strGNcom);
if(g_hGMutex == NULL)
{
return FALSE;
}
// 初始化蓝马的Mutex
g_hBMutex = CreateMutex(NULL, FALSE, g_strBN