在阅读Joseph 和 Ben Albahari的 C# 3.0 in a Nutshell时,我遇到了以下段落(第 673 页,标题为“使用等待和脉冲发出信号”的部分中的第一段)
“ Monitor类通过两个静态方法Wait和Pulse提供了另一种信号构造。原理是您自己使用自定义标志和字段(包含在lock语句中)编写信号逻辑,然后引入Wait和Pulse命令来缓解 CPU 旋转. 这种低级方法的优点是只需要Wait、Pulse和lock语句,就可以实现AutoResetEvent、ManualResetEvent和Semaphore以及WaitHandle的功能的静态方法WaitAll和WaitAny。此外,Wait和Pulse 在所有等待句柄都受到严格挑战的情况下也可以使用。”
我的问题是,最后一句话的正确解释是什么?
- 具有大量/大量等待句柄的情况,其中仅偶尔在任何特定等待句柄上调用 WaitOne()。
- 具有大量/大量等待句柄的情况,其中很少有多个线程倾向于阻塞任何特定的等待句柄。
- 一些其他的解释。
还希望能提供此类情况的说明性示例,以及如何和/或为什么通过等待和脉冲而不是其他方法更有效地处理它们。
谢谢!
编辑:我在这里找到了网上的文字