多线程编程终结篇之一
——使用WIN32API编写多线程
一,为什么要用多线程
运行例程:
单击演示一中的按钮,然后拖动对话框,就会发现在这个耗时的运算对程序有不同的影响,第一个按钮是在主线程中运算,程序就象"死机"一样,不在响应其它消息.为了更好地处理这种耗时的操作,我们可以尝试将耗时的运算放到线程函数中,其实这很简单,看代码就知道了.
//#######################################################################################
// 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111
// 演示1: 使用线程和不使用线程进行耗时运算对程序界面的影响
//=============================================================================
// 耗时的运算程序,运算完毕显示运算时间
void TimeConsumingOperation()
{
DWORD dwStartTime = timeGetTime();
for (long i=0; iEnableWindow(FALSE);
TimeConsumingOperation(); // 耗时的运算程序
GetDlgItem(IDC_BUTTON_OPERATION)->EnableWindow(TRUE);
}
//=============================================================================
// 使用线程调用耗时的运算程序
void CMultiThreadApiDlg::OnButtonOperationByThread()
{
// 创建一个线程函数调用耗时运算
DWORD ThreadID;
CreateThread(NULL,
0,
(LPTHREAD_START_ROUTINE)TimeConsumingOperation,
NULL,
0,
&ThreadID);
}
二,多线程概述
进程和线程都是操作系统的概念.进程是应用程序的执行实例,每个进程是由私有的虚拟地址空间,代码,数据和其它各种系统资源组成,进程在运行过程中创建的资源随着进程的终止而被销毁,所使用的系统资源在进程终止时被释放或关闭.
线程是进程内部的一个执行单元.系统创建好进程后,实际上就启动执行了该进程的主执行线程,主执行线程以函数地址形式,比如说main或WinMain函数,将程序的启动点提供给Windows系统.主执行线程终止了,进程也就随之终止.
每一个进程至少有一个主执行线程,它无需由用户去主动创建,是由系统自动创建的.用户根据需要在应用程序中创建其它线程,多个线程并发地运行于同一个进程中.一个进程中的所有线程都在该进程的虚拟地址空间中,共同使用这些虚拟地址空间,全局变量和系统资源,所以线程间的通讯非常方便,多线程技术的应用也较为广泛.
多线程可以实现并行处理,避免了某项任务长时间占用CPU时间.要说明的一点是,目前大多数的计算机都是单处理器(CPU)的,为了运行所有这些线程,操作系统为每个独立线程安排一些CPU时间,操作系统以轮换方式向线程提供时间片,这就给人一种假象,好象这些线程都在同时运行.由此可见,如果两个非常活跃的线程为了抢夺对CPU的控制权,在线程切换时会消耗很多的CPU资源,反而会降低系统的性能.这一点在多线程编程时应该注意.
Win32 SDK函数支持进行多线程的程序设计,并提供了操作系统原理中的各种同步,互斥和临界区等操作.Visual C++ 6.0中,使用MFC类库也实现了多线程的程序设计,使得多线程编程更加方便.
三,Win32 API对多线程编程的支持
Win32 提供了一系列的API函数来完成线程的创建,挂起,恢复,终结以及通信等工作.下面将选取其中的一些重要函数进行说明.
1,HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,
- mfc线程函数调用 > 多线程编程终结篇之一
-
多线程编程终结篇之一
下载该文档 文档格式:DOC 更新时间:2007-01-08 下载次数:0 点击次数:1文档基本属性 文档语言: Simplified Chinese 文档格式: doc 文档作者: zhjy 关键词: 主题: 备注: 点击这里显示更多文档属性 经理: 单位: Microsoft 分类: 创建时间: 上次保存者: 修订次数: 编辑时间: 文档创建者: 修订: 加密标识: 幻灯片: 段落数: 字节数: 备注: 演示格式: 上次保存时间:
- 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
- DOC格式下载
- 更多文档...
-
上一篇:8MFC的进程和线程
下一篇:深入浅出Win32多线程程序设计之线程控制
点击查看更多关于mfc线程函数调用的相关文档
- 您可能感兴趣的
- mfc线程 mfc强制退出线程 类成员函数线程 线程函数中有map操作 创建线程执行函数 mfctcpsend函数原型 mfcondrawitem函数 mfctcp函数 mfc规则dll接口函数
- 大家在找
-
- · bt下载软件哪个好
- · auto2010注册机下载
- · 如何添加ppt背景图
- · 深圳微电机
- · 反论文抄袭软件下载
- · 体验商务英语综合教程3册第二版课件下载
- · 百科全说王琼年龄
- · led条屏控制软件.exe
- · cad无法启动
- · bxw百姓网招聘
- · 毛概课怎么上
- · 中职生心理健康教育
- · 晋城高级技工学校贴吧
- · 玩具机器人视频
- · 憨豆先生动画全集
- · dotaomg最新版本
- · 中餐礼仪ppt
- · 医学院尸体解剖
- · 黑龙江省地税局网站
- · 电液伺服控制系统
- · autocad2010破解版
- · 城市表层土壤重金属
- · 合肥巨一自动化
- · 可程式定时器
- · 会计岗位职业能力要求
- · 山东电力农电工
- · 五金手册软件免费下载
- · 财务会计理论课件
- · 毕节地区中考化学试卷
- · 下列哪类是非金融交易
- 赞助商链接