函数主要参数的意义。
? hThread:线程句柄。
? dwThreadAffinityMask:线程的相似xìng掩码。
(2)SetThreadIdealProcessor 函数
该函数用于为线程设定合适的处理器。当线程等待时间到,系统将在这个处理器上执行
指定的线程,如果调用成功,将返回上一次的处理器数目或者MAXIMUM_PROCESSORS,
否则返回-1。它的函数原型如下:
DWORD SetThreadIdealProcessor(
HANDLE hThread,
枫叶文学网www.fywxw.com
第9 章 多线程
·217·
DWORD dwIdealProcessor
);
函数中主要参数的意义如下。
? hThread:线程句柄。
? dwIdealProcessor:可以执行指定线程的处理器数目,如果dwIdealProcessor 的值为
MAXIMUM_PROCESSORS,说明该线程没有合适的处理器。
9.实例:赛马程序
实例9-1:赛马程序实例。源代码在光盘中“\09\实例9-1\Racing”目录下。
为了帮助读者理解上述线程的基本知识,为后续高级技术打好基础,本节的最后给出一
个多线程编程实例,模拟赛马的过程。
(1)创建工程
首先利用VC++6.0 的AppWizard 创建基于对话框的工程Racing,所有设置都采用默认选
项。
给对话框添加控件。包括1 个图片框、1 个组合框、3 个静态文本控件、3 个滑动杆控件、
4 个按钮。控件的属xìng如表9-4 所示。
表9-4 控件属xìng列表
ID 属xìng或作用 控件类型
IDC_RACINGBOX Frcom 图像框控件
IDC_STATIC 速度设置 组合框控件
IDC_STATIC 红马 静态文本控件
IDC_STATIC 绿马 静态文本控件
IDC_STATIC 蓝马 静态文本控件
IDC_SLIDERR 红马速度 滑动杆控件
IDC_SLIDERG 绿马速度 滑动杆控件
IDC_SLIDERB 蓝马速度 滑动杆控件
IDSTART 开始 按钮
IDSTOP 停止 按钮
IDPAUSE 暂停 按钮
IDCANCEL 关闭 按钮
(2)定义数据结构
定义一个包含赛马信息的结构HORSE,代码如下:
typedef struct _horse
{
HWND hWnd; // 窗口句柄
int speed; // 马速度
int x; // 马位置的x 坐标
int y; // 马位置的y 坐标
int size; // 马的大小, 用一个球来表示,size 是半径
COLOR color; // 颜色
CRect rect; // 表示