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

一、模块、进程、线程

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。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值