关注这个问题源于我要把一个多个按钮多次触发的应用程序改写为一个单次触发一次完成的程序。
进程:用C,C++,JAVA等语言编写的源程序经过编译链接后生成可执行文件,交给计算机处理,处在运行状态的应用程序叫做进程。从用户的角度看,进程是应用程序的一个执行过程,从操作系统内核的角度看,进程是为应用程序的运行提供一个适当的环境。进程与应用程序的关系是:前者是处于动态条件下由操作系统维护的系统资源管理实体,后者是静止的存储于电脑硬盘上的一个静止文件。
在Win32中,进程并不执行什么,它只是占据应用程序所使用的地址空间。为了让进程完成一定的工作,进程必须至少占有一个线程,正是这个线程负责包含进程地址空间中的代码。实际上,一个进程可以包含几个线程,它们可以同时执行进程地址空间中的代码。为了做到这一点,每个线程有自己的一组CPU寄存器和堆栈。每个进程中至少有一个线程在执行其地址空间中的代码。如果没有线程执行进程地址空间中的代码,进程
也就没有继续存在的理由,系统将自动清除进程及其地址空间。
在MFC中,线程被分为两类,即工作线程和用户界面线程。如果一个线程只完成后台计算,不需要和用户交互,那么可以使用工作线程;如果需要创建一个处理用户界面的线程,则应使用用户界面线程。这两者的主要区别在于,MFC框架会给用户界面线程增加一个消息循环,这样用户界面线程就可以处理自己消息队列中的消息。这样看来,如果需要在后台作一些简单的计算(如对电子表格的重算),则首先应考虑使用工作程,而当后台线程需要处理比较复杂的任务,确切地说,当后台线程的执行过程会随着实际情况的不同而改变时,就应该使用用户界面线程,以便能对不同的消息作出响应。
MFC创建用户界面线程和工作线程的方式,参考http://www.vczx.com/tutorial/mfc/mfc8.php
或参考“多线程编程之一 问题提出”