考虑传统的生产者/消费者线程示例。当消费者检查缓冲区大小不为零时,是否需要在等待锁定之前向其他线程发出信号?这是方法代码:
public void consume()
{
lock(_lock)
{
while(buf.Count == 0)
{
// Is there any need to *Monitor.Pulse(_lock);* here?
Monitor.Wait(_lock);
}
// Consume
}
}
public void produce()
{
lock(_lock)
{
// Produce
buf.Insert(item);
Monitor.PulseAll(_lock);
}
}