MFC笔记(四)——多线程程序设计1:模块、进程、线程间的基本概念

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37764129/article/details/83347065

一、模块、进程、线程

1.1 模块

        一段可执行的程序(包括EXE和DLL),其程序代码、数据、资源被加载到内存中,由系统创建一个数据结构来管理它。这段程序就是一个模块。这里所说的数据结构(Module Database,即(MDB)),其实就是PE格式中的PE表头。

1.2 进程

        进程主要表达“拥有权”的概念,就是一大堆拥有权的集合。进程拥有地址空间(由memory context决定)、动态配置而来的内存、文件、线程和一系列的模块。操作系统使用一个所谓的Process Database(PDB)数据结构,来记录(管理)它所拥有的一切。

1.3 线程

        线程主要表达模块中的程序代码的“执行事实”。系统也是以一个特定的数据结构(Thread Database,TDB)记录线程的所有相关数据,包括线程局部存储空间(Thread Local Storage,TLS)、消息队列、handle表格、地址空间等。

1.4 进程与线程的关系

        通常进程以一个线程(称为主线程)作为开始,根据需要,进程可以产生更多的线程(利用CreateThread),让CPU在同一时间执行不同段落的码(这是幻觉)。一颗CPU是通过调度器来实现“多个线程同时工作”——它以一个硬件定时器和一组复杂的游戏规则,在不同的线程之间做快速切换操作。以Windows 9x和Windows NT而言,在非特殊情况下,每个线程被CPU照顾的时间是20个milliseconds。

 

猜你喜欢

转载自blog.csdn.net/qq_37764129/article/details/83347065