MFC自学书籍8

MFC自学书籍8

ID:37934006

大小:221.13 KB

页数:15页

时间:2019-06-03

MFC自学书籍8_第1页
MFC自学书籍8_第2页
MFC自学书籍8_第3页
MFC自学书籍8_第4页
MFC自学书籍8_第5页
资源描述:

《MFC自学书籍8》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、8.MFC的进程和线程1.Win32的进程和线程概念进程是一个可执行的程序,由私有虚拟地址空间、代码、数据和其他操作系统资源(如进程创建的文件、管道、同步对象等)组成。一个应用程序可以有一个或多个进程,一个进程可以有一个或多个线程,其中一个是主线程。线程是操作系统分时调度分配CPU时间的基本实体。一个线程可以执行程序的任意部分的代码,即使这部分代码被另一个线程并发地执行;一个进程的所有线程共享它的虚拟地址空间、全局变量和操作系统资源。之所以有线程这个概念,是因为以线程而不是进程为调度对象效率更高:由于创建新进程必须加载代码,而线程要执行的代码已经被映射到进程的地址空间,

2、所以创建、执行线程的速度比进程更快。一个进程的所有线程共享进程的地址空间和全局变量,所以简化了线程之间的通讯。1.Win32的进程处理简介因为MFC没有提供类处理进程,所以直接使用了Win32API函数。1.进程的创建调用CreateProcess函数创建新的进程,运行指定的程序。CreateProcess的原型如下:BOOLCreateProcess(LPCTSTRlpApplicationName,LPTSTRlpCommandLine,LPSECURITY_ATTRIBUTESlpProcessAttributes,LPSECURITY_ATTRIBUTESlpT

3、hreadAttributes,BOOLbInheritHandles,DWORDdwCreationFlags,LPVOIDlpEnvironment,LPCTSTRlpCurrentDirectory,LPSTARTUPINFOlpStartupInfo,LPPROCESS_INFORMATIONlpProcessInformation);其中:lpApplicationName指向包含了要运行模块名字的字符串。lpCommandLine指向命令行字符串。lpProcessAttributes描述进程的安全性属性,NT下有用。lpThreadAttributes描述进

4、程初始线程(主线程)的安全性属性,NT下有用。bInHeritHandles表示子进程(被创建的进程)是否可以继承父进程的句柄。可以继承的句柄有线程句柄、有名或无名管道、互斥对象、事件、信号量、映像文件、普通文件和通讯端口等;还有一些句柄不能被继承,如内存句柄、DLL实例句柄、GDI句柄、URER句柄等等。子进程继承的句柄由父进程通过命令行方式或者进程间通讯(IPC)方式由父进程传递给它。dwCreationFlags表示创建进程的优先级类别和进程的类型。创建进程的类型分控制台进程、调试进程等;优先级类别用来控制进程的优先级别,分Idle、Normal、High、Real

5、_time四个类别。lpEnviroment指向环境变量块,环境变量可以被子进程继承。lpCurrentDirectory指向表示当前目录的字符串,当前目录可以继承。lpStartupInfo指向StartupInfo结构,控制进程的主窗口的出现方式。lpProcessInformation指向PROCESS_INFORMATION结构,用来存储返回的进程信息。从其参数可以看出创建一个新的进程需要指定什么信息。从上面的解释可以看出,一个进程包含了很多信息。若进程创建成功的话,返回一个进程信息结构类型的指针。进程信息结构如下:typedefstruct_PROCESS_IN

6、FORMATION{HANDLEhProcess;HANDLEhThread;DWORDdwProcessId;DWORDdwThreadId;}PROCESS_INFORMATION;进程信息结构包括进程句柄,主线程句柄,进程ID,主线程ID。2.进程的终止进程在以下情况下终止:调用ExitProcess结束进程;进程的主线程返回,隐含地调用ExitProcess导致进程结束;进程的最后一个线程终止;调用TerminateProcess终止进程。当要结束一个GDI进程时,发送WM_QUIT消息给主窗口,当然也可以从它的任一线程调用ExitProcess。1.W

7、in32的线程1.线程的创建使用CreateThread函数创建线程,CreateThread的原型如下:HANDLECreateThread(LPSECURITY_ATTRIBUTESlpThreadAttributes,DWORDdwStackSize,LPTHREAD_START_ROUTINElpStartAddress,LPVOIDlpParameter,DWORDdwCreationFlags,//creationflagsLPDWORDlpThreadId);其中:lpThreadAttributes表示创建线程

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。