我有简单的线程安全容器类。 它具有标准的添加/删除方法。 通常枚举项的实现方式为: 但是我想以线程安全的方式利用for-in支持: 我的枚举器实现将容器锁定在其构造函数中,并在析构函数中对其进行解锁。 这是可行的,但前提是假设枚举数的实例是在for-in循环的开头创建的,并 ...
我有简单的线程安全容器类。 它具有标准的添加/删除方法。 通常枚举项的实现方式为: 但是我想以线程安全的方式利用for-in支持: 我的枚举器实现将容器锁定在其构造函数中,并在析构函数中对其进行解锁。 这是可行的,但前提是假设枚举数的实例是在for-in循环的开头创建的,并 ...
我很高兴看到Delphi在Delphi 2009中引入TMonitor记录,允许您在多线程环境中锁定特定对象。 令我困惑的是这种记录类型的Pulse和PulseAll方法。 例如,Delphi的Pulse中的条目帮助指出“通知等待队列中的下一个线程,一旦调用线程释放对象,它就能锁定指定的 ...
Delphi Docwiki解释说, Pulse通知等待队列中的下一个线程,一旦调用线程释放对象,它就能锁定指定的对象。 PulseAll发信号通知等待队列中的所有线程。 我发现这个代码在线程队列实现中使用Pulse,并且根据上面的定义,认为应该使用PulseAll - 或者以不同的方式 ...
在阅读了文章“Simmering Unicode,让DPL沸腾”和“Simmering Unicode,让DPL沸腾(第2部分)”的“Oracle Delphi”(Allen Bauer)之后,Oracle就是我理解的全部:) 文章提到了Delphi Parallel Library(DP ...
我目前正致力于将现有的Delphi 5应用程序移植到Delphi 2010。 它是加载到Outlook中的多线程DLL(由Outlook生成的线程)。 当通过Delphi 2010编译时,每当我关闭一个表单时,我都会遇到TMonitor.Destroy中的“无效指针操作”......即s ...
我回来了另一个关于线程和同步的问题。 想象一下,服务器应用程序必须执行冗长的操作,并且客户端希望他的GUI在等待服务器的响应时保持响应。 我想到了以下模式: WorkerThread是一个派生自TThread的简单类,它执行传递给其构造函数的函数,然后终止(使用Ready = Tru ...