1

我下载了 OTL http://www.omnithreadlibrary.com/

并编译D2007 grouproj,安装包,没有问题。

然后我创建了一个使用 OtlParallel 单元的简单控制台应用程序,当然,我将 OtlParallel 和其他一些 pas 文件添加到项目中。

但它抱怨找不到 Generics.Collections。

4

1 回答 1

2

文档说:

高级抽象在 OtlParallel 单元中实现。它们都是通过工厂类 Parallel 创建的。高级代码大量使用匿名方法和泛型,这使得 Delphi 2009 成为支持的最低版本。

这种泛型和匿名方法的使用使得这个单元与 Delphi 2007 完全不兼容。

如果您希望使用像Parallel.ForDelphi 2007 和 OTL 这样的结构,那么您必须OtlParallel自己进行反向移植。如果没有匿名方法,这很难做到并实现同样流畅的代码风格。您将不得不使用过程类型而不是匿名方法。而且您必须手动实现闭包。

所以而不是使用

TProc = reference to procedure;

你会用

TMethod = procedure of object;

然后为了实现这一点,您使用无参数方法创建一个类或记录。您需要添加所需的任何状态作为该类型的成员,并填充这些成员。这实质上是手动实现带有变量捕获的闭包。你需要处理一生。确保实例比并行循环更长。

祝你好运!

于 2015-10-15T06:47:40.460 回答