Car*_*sen 11 delphi multithreading synchronization delphi-2009 tmonitor
我很高兴看到Delphi在Delphi 2009中引入TMonitor记录,允许您在多线程环境中锁定特定对象.令我困惑的是这种记录类型的Pulse和PulseAll方法.
例如,Delphi的Pulse中的条目帮助指出"通知等待队列中的下一个线程,一旦调用线程释放对象,它就能锁定指定的对象."
真?那是什么意思?我使用过TMonitor而没有使用Pulse而没有问题.此外,在Delphi的源代码中,TMonitor的一些用途从不使用Pulse.
Pulse和PulseAll方法是否仅包含在Delphi的TMonitor记录中,用于与.NET Monitor类的源级兼容性,还是它们真的有用?
有两个问题("TMonitor.Pulse与TMonitor.PulseAll"和"Delphi系统单元中的TMonitor是什么有利于")这个问题,但我正在寻找一个明确的答案.
我对所引用问题的回答中的维基百科链接提供了有关监视器的 wait/pulse/pulseall 功能的使用的讨论。一个线程必须进入监视器并调用wait。然后另一个线程必须进入监视器并调用pulse或pulseall来向第一个等待线程发出信号。Pulse 仅向一个等待线程发出信号,而pulseall 向所有等待线程发出信号。查看维基百科文章的条件变量部分以获取更详细的讨论。RTL 源代码中也有注释描述了 TMonitor 的方法。
| 归档时间: |
|
| 查看次数: |
1238 次 |
| 最近记录: |