多线程同步:互斥对象、事件对象、关键代码段

多线程同步:互斥对象、事件对象、关键代码段

浪子不回头ぞ 提交于 2020-04-21 06:41:50
互斥对象、事件对象、关键代码段 一、互斥对象和事件对象属于内核对象,利用内核对象进行线程同步,速度较慢,但 可以实现在多个进程中各线程间进行同步 。 二、关键代码段式工作在用户方式下,同步速度较快,但在使用关键代码段时,很容易进入死锁状态,因为在进入关键代码时无法设定超时值。 MFC下InitializeCriticalSection()和DeleteCriticalSection()可以放在类的构造函数和析构函数中 在编写程序时首选关键代码段,但需要非常注意死锁问题! 多线程编程推荐书籍《Windows核心编程》机械工业出版社 三、线程、进程、程序的区别 程序 计算机指令的集合,它以文件的形式存储在磁盘上 进程 通常被定义为一个正在运行的程序的实例,是一个程序在其自身的地址空间中的一次执行活动 区别: 进程是资源申请、调度和独立运行的单位,因此,它使用系统中的运行资源;而程序不能申请系统资源,不能被系统调度,也不能作为独立的运行的单位 , 因此,他不占用系统的运行资源。 进程由两个部分组成: 1、操作系统用来管理进程的内核对象。内核对象是操作系统内部分配的一个内存块,内核对象也是系统用来存放关于进程的统计信息的地方。 2、地址空间。它包含所有可执行模块或DLL模块的代码和数据。他还包含动态内存分配的空间。如线程堆栈和堆分配空间。 内核对象:是操作系统内部分配的一个内存块