⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 16.4 互斥对象、事件对象与关键代码段的比较.txt

📁 网上第一本以TXT格式的VC++深入详解孙鑫的书.全文全以TXT格式,并每一章节都分了目录,清晰易读
💻 TXT
字号:
16.4  互斥对象、事件对象与关键代码段的比较
从上一章开始,本书己经介绍了三种线程同步的方式,它们之间的区别如下所述: 

·	
互斥对象和事件对象都属于内核对象,利用内核对象进行线程同步时,速度较慢,但利用互斥对象
和事件对象这样的内核对象,可以在多个进程中的各个线程间进行同步。 

·	
关键代码段工作在用户方式下,同步速度较快,但在使用关键代码段时,很容易进入死锁状态,因
为在等待进入关键代码段时无法设定超时值。


通常,在编写多线程程序并需要实现线程同步时,首选关键代码段,由于它的使用比较简单,如果
是在 MFC程序中使用的话,可以在类的构造函数中调用 Initi aJ izeCritical Section函数,在该
类的析构函数中调用 DeleteCriticalSection函数,在所需保护的代码前面调用 
EnterCriticalSection函数,在访问完所需保护的资源之后,调用 LeaveCriticaJSection函数。可
见,关键代码段在使用上是非常方便的,但有几点需要注意:一是在程序中调用了 EnterCriticaJ 
Section函数之后,一定要相应地调用 LeaveCriticalSection函数,否则其他等待该临界区对象所
有权的线程将无法执行。二是如果访问关键代码段时,使用了多个临界区对象,就要注意防止线程
死锁的发生。另外,如果需要在多个进程间的各个线程间实现同步的话,可以使用互斥对象和事件
对象。
如果读者希望深入学习多线程编程以及线程同步方面的知识,可以阅读 <<Windows核心编程》这本
书。 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -