hur.cn - 华软网

 热门搜索

关于关键段的一个问题

  作者:未知    来源:网络    更新时间:2011/5/13
请问除了内存不足,还有那些因素会导致两个或者以上的线程争夺关键段?WIN XP以前的系统内存不足会导致关键段的争夺,这是什么原因?
---华软 网友回答---
... LZ小白..争夺关键段. 是自己写代码,进入cs..
---华软网友回复---
引用 1 楼 smwhotjay 的回复:
... LZ小白..争夺关键段. 是自己写代码,进入cs..

Windows核心编程 第五版 里如下写到

"在使用关键段的时候还可能产生另一个问题.如果有两个或两个以上的线程在同一时刻正果同一个关键段,那么关键段会在内部使用一个事件内核对象..........  因为大多数关键段从来都不会发生争夺现象"

"Windows XP之前,在内存不足的情况下可能会发生争夺关键段的现象.."
---华软网友回复---
引用 2 楼 call_of_duty 的回复:
引用 1 楼 smwhotjay 的回复:

... LZ小白..争夺关键段. 是自己写代码,进入cs..

Windows核心编程 第五版 里如下写到

"在使用关键段的时候还可能产生另一个问题.如果有两个或两个以上的线程在同一时刻正果同一个关键段,那么关键段会在内部使用一个事件内核对象..........  因为大多数关键段从来都不会发生争夺现象"

"Windows XP之……

请问各位大牛能帮忙解答下吗?谢谢
---华软网友回复---
算了...散分吧.....
---华软网友回复---
所谓的“关键段”一般称为临界区,是实现进程内多线程互斥的常用方法。所谓“争夺关键段”就是一个线程以进入临界区(尚未离开),而又有其它线程要进入临界区。在首次发生“争夺”时,程序会自动创建一个内核事件,并等待该事件状态,当前一个线程离开临界区时会设置该事件通知正在等待的线程。若再次发生“争夺”,则利用前面已经创建的内核事件,无须再创建。等待和设置内核对象需要的时间较长,而很多情况下,线程间并不会出现“争夺关键段”的情况,所以利用临界区实现线程互斥比直接使用内核事件效率高。
---华软网友回复---
和内存没有关系吧
---华软网友回复---
内存不足时频繁出现页故障,程序运行速度很慢,相对而言线程切换更加频繁,所以“争夺”的可能性就变大了。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。