这是线程等待/脉冲的有效实现吗?

本文关键字:有效 实现 脉冲 线程 等待 | 更新日期: 2023-09-27 18:18:18

正如标题所说,这是一个有效的实现吗?我知道lock报表的问题,但由于要求,必须使用它。这个代码有效吗?

lock (richTextBox)
{
    Monitor.Wait(richTextBox);
    richTextBox.AppendText("Text");
    Monitor.PulseAll(richTextBox);
}

这是线程等待/脉冲的有效实现吗?

这段代码没有意义,因为每个线程都会阻塞在Monitor.Wait上,除非其他代码块调用Monitor.PulseAll,否则没有一个线程会被释放。通常等待/脉冲用于生产者/消费者类型的场景(即一个或多个线程正在等待另一个线程完成某些任务或提供一些数据)。

如果你的问题更多的是关于使用lock语句而不是:Monitor.Enter/Monitor.Exit,那部分是好的。

根据MSDN文章:

lock(obj) { ... } 

应该与

相同
Monitor.Enter(obj); try { ... } finally { Monitor.Exit(obj); }