Mik*_*ski 10 delphi multithreading
关于TEvent的Delphi XE2文档说明了这一点:
有时,您需要等待线程完成某些操作,而不是等待特定线程完成执行.为此,请使用事件对象.应使用全局范围创建事件对象(System.SyncObjs.TEvent),以便它们可以像所有线程可见的信号一样工作.
当线程完成其他线程所依赖的操作时,它会调用TEvent.SetEvent.SetEvent打开信号,因此任何其他检查的线程都会知道操作已完成.要关闭信号,请使用ResetEvent方法.
例如,考虑一种情况,您必须等待多个线程才能完成执行而不是单个线程.因为您不知道哪个线程最后会完成,所以您不能简单地使用其中一个线程的WaitFor方法.相反,您可以让每个线程在完成时递增一个计数器,并让最后一个线程信号通过设置事件来完成它们.
但是,Delphi文档没有解释另一个线程如何检测到调用了TEvent.Set事件.你能解释一下如何检查TEvent.Set是否被调用?
| 归档时间: |
|
| 查看次数: |
3333 次 |
| 最近记录: |