文档文库
手机版
投诉建议
热门搜索:
心得体会
演讲稿
思想汇报
首页
心得体会
学习心得体会
培训心得体会
军训心得体会
社会实践
作风建设
工作心得体会
教育心得体会
演讲稿
演讲稿格式
演讲稿范文
竞聘演讲稿
师德演讲稿
三分钟演讲稿
思想汇报
思想汇报范文
转正思想汇报
大学生思想汇报
季度思想汇报
教师思想汇报
工作计划
工作计划格式
工作计划开头
工作计划结尾
总结与计划
工作计划模板
工作总结
年终工作总结
年度工作总结
个人工作总结
实习报告
实习报告范文
实习计划范文
实习鉴定范文
实习报告内容
个人简历
求职简历
简历范文
简历模板
简历表格
简历格式
祝福语
春节
除夕
元宵
端午节
合同范文
合同范本
合同样本
合同范本格式
首页
>
正在进行安全检测...
正在进行安全检测...
发布时间:1714576229 来源:
文档文库
小
中
大
字号:
手机查看
1/26
VC
中多线程使用比较广泛而且实用
,
在网上看到的教程
.
感觉写的挺好
.
一、问题的提出
编写一个耗时的单线程程序:
新建一个基于对话框的应用程序
SingleThread
,在主对话框
IDD_SINGLETHREAD_DIALOG
添加一个按钮,
ID
为
IDC_SLEEP_SIX_SECOND
,标题
为
“
延时
6
秒
”
,添加按钮的响应函数,代码如下:
void CSingleThreadDlg::OnSleepSixSecond(
{
Sleep(6000; //
延时
6
秒
}
编译并运行应用程序,单击
“
延时
6
秒
”
按钮,你就会发现在这
6
秒期间程序就象
“
死机
”
一
样,不在响应其它消息。为了更好地处理这种
耗时的操作,我们有必要学习
——
多线程编程。
二、多线程概述
进程和线程都是操作系统的概念。
进程是应用程序的执行实例,
每个进程是由私有的虚拟地
址空间、代码、数据和其它各种系统资源组成
,
进程在运行过程中创建的资源随着进程的终止而被销毁,
所使用的系统资源在进程终止时被释
放或关闭。
线程是进程内部的一个执行单元。
系统创建好进程后,
实际上就启动执行了该进程的主执行
线程,主执行线程以函数地址形式,比如说
main
或
WinMain
函数,将程序的启动点提供给
Windows
系统。主执行线程终止了,进程也
就随之终止。
每一个进程至少有一个主执行线程,
它无需由用户去主动创建,
是由系统自动创建的。
用户
根据需要在应用程序中创建其它线程,多个线
程并发地运行于同一个进程中。
一个进程中的所有线程都在该进程的虚拟地址空间中,
共同使用
这些虚拟地址空间、全局变量和系统资源,所
以线程间的通讯非常方便,多线程技术的应用也较为广泛。
多线程可以实现并行处理,避免了某项任务长时间占用
CPU
时间。要说明的一点是,目前
大多数的计算机都是单处理器(
CPU
)的,为了运
行所有这些线程,操作系统为每个独立线程安排一些
CPU
时间,操作系统以轮换方式向线程提
供时间片,这就给人一种假象,好象这些线程都在
同时运行。由此可见,如果两个非常活跃的线程为了抢夺对
CPU
的控制权,在线程切换时会消
耗很多的
CPU
资源,反而会降低系统的性能。这一
1
2/26
点在多线程编程时应该注意。
Win32 SDK
函数支持进行多线程的程序设计,
并提供了操作系统原理中的各种同步、
互斥
和临界区等操作。
Visual C++
6.0
中,使用
MFC
类库也实现了多线程的程序设计,使得多线程编程更加方便。
三、
Win32 API
对多线程编程的支持
Win32
提供了一系列的
API
函数来完成线程的创建、挂起、恢复、终结以及通信等工作。
下面将选取其中的一些重要函数进行说明。
1
、
HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,
DWORD dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId;
该函数在其调用进程的进程空间里创建一个新的线程,
并返回已建线程的句柄,
其中各参数说明
如下:
lpThreadAttributes
:指向一个
SECURITY_ATTRIBUTES
结构的指针,该结构决定了线程
的安全属性,一般置为
NULL
;
dwStackSize
:指定了线程的堆栈深度,一般都设置为
0
;
lpStartAddress
:表示新线程开始执行时代码所在函数的地址,即线程的起始地址。一般情况
为
(LPTHREAD_START_ROUTINEThreadFunc
,
ThreadFunc
是线程函数名;
lpParameter
:指定了线程执行时传送给线程的
32
位参数,即线程函数的参数;
dwCreationFlags
:控制线程创建的附加标志,可以取两种值。如果该参数为
0
,线程在被创
建后就会立即开始执行;如果该参数为
CREATE_SUSPENDED,
则系统产生线程后,该线程处于挂起状态,并不马上执行,直至函数
ResumeThread
被调用;
lpThreadId
:该参数返回所创建线程的
ID
;
如果创建成功则返回线程的句柄,否则返回
NULL
。
2
、
DWORD SuspendThread(HANDLE hThread;
该函数用于挂起指定的线程,如果函数执行成功,则线程的执行被终止。
3
、
DWORD
ResumeThread(HANDLE hThread;
该函数用于结束线程的挂起状态,执行线程。
4
、
VOID ExitThread(DWORD dwExitCode;
该函数用于线程终结自身的执行,主要在线程的执行函数中被调用。其中参数
dwExitCode
用
来设置线程的退出码。
5
、
BOOL
TerminateThread(HANDLE hThread,DWORD dwExitCode;
一般情况下,线程运行结束之后,线程函数正常返回,但是应用程序可以调用
TerminateThread
强行终止某一线程的执行。各参数含义如下
:
2
本文来源:
https://www.2haoxitong.net/k/doc/55660d6548d7c1c708a14500.html
《正在进行安全检测....doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
文档为doc格式
分享到:
相
关
案
例
正在进行安全检测...
2024-05-01
正在进行安全检测...
2024-05-01
正在进行安全检测...
2024-05-01
正在进行安全检测...
2024-05-01
正在进行安全检测...
2024-05-01
正在进行安全检测...
2024-05-01
正在进行安全检测...
2024-05-01
正在进行安全检测...
2024-05-01
安全验证
2024-05-01
正在进行安全检测...
2024-05-01
相关推荐
推荐内容