对于WIndows的初学者的我来说,线程、进程是一个很抽象的概念,理解他们是比较困难的。接下来我就讲一下进程、线程的概念及关系。
查阅资料得出,在windows下这两个概念都和系统内核对象脱不开关系。
那么什么是系统内核对象呢?
内核对象是系统内核分配的一个内存块,该内存块描述的是一个数据结构,其成员负责维护对象的各种信息。内核对象的数据只能由系统内核来哦访问,应用程序无法在内存中找到这些数据结构并直接改变他们的内容。
举个例子:内核对象就像是一个玻璃瓶,描述的是一个玻璃纤维结构,它的成员负责为何玻璃瓶的各种信息。玻璃瓶的玻璃纤维只能由制造他的人(就是系统内核)访问,使用它的人(相当于应用程序)无法对这些玻璃纤维做出改变。
内核对象这段说明是否保存 存在争议
进程是一个正在运行的程序的实例,他属于系统内核对象。进程提供地址空间,其中包含有可执行程序和动态链接库的代码和数据,此外还提供了线程对战和进程堆控件等动态分配内存的空间。
从上述描述中可以发现,进程主要由两部分构成,即系统内核用于管理进程的进程内核对象和进程地址空间。那么进程是如何实现应用程序行为的呢?可以将进程简单的理解为一个容器,它只提供空间,执行程序的代码是由线程实现的。线程存在于进程中,他负责执行进程地址空间中的代码。当一个进程创建时,系统会自动为其创建一个线程,该线程被称为主线程。在主线程中用户可以通过代码创建其他线程,当进程总的主线程结束时,进程也就结束了。
我会在下面接着说明MFC怎么创建。以上部分参考自《Visual C++从入门到精通》(第三版)
顺便广告一下我们的Qt群:368241647