WEB开发网
开发学院软件开发VC VC++实现多线程的调度和处理 阅读

VC++实现多线程的调度和处理

 2010-07-20 20:44:59 来源:WEB开发网   
核心提示:下面介绍该例程的具体实现:利用AppWizard 生成一个名为Mutexes 基于对话框的应用程序框架,利用对话框编辑器在对话框中填加以下内容:三个组合框,VC++实现多线程的调度和处理(4),三个复选框和一个列表框,三个组合框分别允许改变进程优先级和两个线程优先级,在这两个类当中分别加入同步访问类的锁对象sLock,

下面介绍该例程的具体实现:

利用AppWizard 生成一个名为Mutexes 基于对话框的应用程序框架。

利用对话框编辑器在对话框中填加以下内容:三个组合框,三个复选框和一个列表框。三个组合框分别允许改变进程优先级和两个线程优先级,其ID 分别设置为:IDC_PRIORITYCLASS、IDC_DSPYTHRDPRIORITY 和IDC_CNTRTHRDPRIORITY。三个复选框分别对应着同步机制选项、显示计数线程执行选项和暂停选项,其ID 分别设置为IDC_SYNCHRONIZE、IDC_SHOWCNTRTHRD 和IDC_PAUSE。列表框用于显示线程显示程序中两个线程的共同操作对象m_strNumber,其ID 设置为IDC_DATABOX。

创建类CWinThread 的派生类CExampleThread。该类将作为本程序中使用的两个线程类:CCounterThread 和CDisplayThread 的父类。这样做的目的仅是为了共享两个线程类的共用变量和函数。

在CExampleThread 的头文件中填加如下变量:

CMutexesDlg * m_pOwner;//指向类CMutexesDlg指针

BOOL m_bDone;//用以控制线程执行

及函数:

void SetOwner(CMutexesDlg* pOwner)

{ m_pOwner=pOwner; };//取类CMutexesDlg的指针

然后在构造函数当中对成员变量进行初始化:

m_bDone=FALSE;//初始化允许线程运行

m_pOwner=NULL;//将该指针置为空

m_bAutoDelete=FALSE;//要求手动删除线程对象

创建两个线程类CCounterThread 和CdisplayThread。这两个线程类是CExampleThread 的派生类。分别重载两个线程函数中的::Run() 函数,实现各线程的任务。在这两个类当中分别加入同步访问类的锁对象sLock,这里将根据同步机制的复选与否来确定是否控制对共享资源的访问。不要忘记需要加入头文件#include "afxmt.h"。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:VC 实现 线程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接