进程通常被定义为一个正在运行的程序的实例.它由两个部分组成:
一个是操作系统用来管理进程的内核对象.内核对象也是系统用来存放关于进程的统计信息的地方.
另一个是地址空间,它包含所有可执行模块或DLL模块的代码和数据.也包含动态内存分配的空间,如线程堆栈和堆分配的空间.

进程是不活泼的.也就是说,进程是没有执行能力的,它仅仅是代码和数据的集合.它必须拥有一个在它环境中运行的线程,并由这个线程负责执行包含在进程地址空间内的代码.


单个进程可以包含多个线程.每个线程都有自己的一组CPU寄存器和它自己的堆栈.每个进程至少拥有一个线程,如果进程一个线程都没有,也就失去了存在的意义,系统就会自动撤销该进程和它的地址空间.

在Windows下,创建进程是需要开销大量的资源,但是创建线程几乎不需要资源,所以在Windows下更推荐使用单进程下的多线程.在Unix则推荐使用多进程.

Windows下是通过快速的切换线程,采取循环(有优先级)的方式给不同的线程提供一定的时间片,来运行代码.当这个切换速度足够快时,就造成了多个同时运行的假象.

创建进程时,系统会自动为它创建一个线程,这个线程就被称为主线程.和界面有关的工作,一般都交给主线程去做,不论是通过事件,消息还是别的方式进行通讯.其他的线程负责与界面无关的计算,处理等,也被叫做Work Thread.

进程中的内存对属于该进程的所有线程都是可用的.每个进程都有一个标识,可以通过调用GetCurrentProcessID函数来获取.这个进程标识在整个系统内是唯一的.

其他的内容,感觉和要说的目的无关,就不多说了.其他的一些细节,后面或许会说.

欲知后事如何,且听下回分解.

posted on 2011-08-03 20:21  solokey  阅读(270)  评论(0编辑  收藏  举报