信号量的物理意义是当信号量值大于零时表示有什么?;当信号量值小于零时,其绝对值为多少 .

白鴿子 1年前 已收到1个回答 举报

348198741 幼苗

共回答了16个问题采纳率:87.5% 举报

信号量Semaphore 类表示一个命名信号量(系统范围)或本地信号量.Windows 信号量是计数信号量,可用于控制对资源池的访问.x0d管理受限资源x0d线程通过调用 WaitOne 方法来进入信号量,此方法是从 WaitHandle 类派生的.当调用返回时,信号量的计数将减少.当一个线程请求项而计数为零时,该线程会被阻止.当线程通过调用 Release 方法释放信号量时,将允许被阻止的线程进入.针对让被阻止的线程进入信号量,不存在保证的顺序(例如 FIFO 或 LIFO).x0d线程可以通过重复调用 WaitOne 方法来多次进入信号量.若要释放信号量,线程可以调用 Release 方法重载相同的次数,也可以调用 Release 方法重载并指定要释放的项数.x0d信号量和线程标识x0dSemaphore 类不对向 WaitOne 和 Release 方法发出的调用强制线程标识.例如,信号量的一个常用方案包括一个生产者线程和一个使用者线程,其中一个线程总是增加信号量计数,而另一个线程总是减少信号量计数.x0d编程人员应负责确保线程释放信号量的次数不会过多.例如,假定信号量的最大计数为二,线程 A 和线程 B 都进入信号量.如果线程 B 中发生了一个编程错误,导致它调用 Release 两次,则两次调用都会成功.这样,信号量的计数就已经达到了最大值,所以,当线程 A 最终调用 Release 时,将引发 SemaphoreFullException.x0d命名信号量Windows 操作系统允许信号量具有名称.命名信号量在整个系统范围都有效.即,创建命名信号量后,所有进程中的所有线程都是可见的.因此,命名信号量可用于同步进程的活动以及线程的活动.x0d您可以使用可用于指定名称的一个构造函数来创建表示命名系统信号量的 Semaphore 对象.

1年前

8
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 2.269 s. - webmaster@yulucn.com