信号量和关键区域之间有什么区别?

时间:2010-08-25 19:54:51

标签: semaphore

我唯一理解的是

  • 信号量是一种原始的方式
  • 关键区域有一个GUARD变量(信号量也可以,但名称不是GUARD!)

...

那么差异是什么?

4 个答案:

答案 0 :(得分:5)

通常,关键区域是如果存在两个单独的执行线程,则会发生竞争条件或一些其他不良影响的地方。信号量是防止两个线程在同一时间点处于关键区域的一种方法。

答案 1 :(得分:2)

GUARD一次只允许1个线程进入关键区域,而信号量可以允许n个线程(指定n)同时进入关键区域。

答案 2 :(得分:1)

当一个进程执行操作共享数据(或资源)的代码时,我们说该进程位于其关键部分(CS)(对于该共享数据) 和信号量是用作标志的非负整数变量 如果资源是免费的,则发出信号

答案 3 :(得分:0)

“关键区域”有两种解释:

  1. 如果两个线程同时执行,将产生未定义结果的代码区域。

  2. 除当前线程之外的所有执行程序隔离的代码区域。一个例子是中断处理程序。这些区域通常被称为“关键部分”。在Intel CPU上,您可以使用CLI / STI说明开始/结束关键部分。