OTL在D2007下无法编译
OTL can't be compiled under D2007
我下载了 OTL http://www.omnithreadlibrary.com/
编译D2007 grouproj,安装包,没有问题。
然后我创建一个使用 OtlParallel 单元的简单控制台应用程序,当然,我将 OtlParallel 和一些其他 pas 文件添加到项目中。
但它抱怨找不到 Generics.Collections。
High-level abstractions are implemented in the OtlParallel unit. They are all created through the factory class Parallel. High-level code intensively uses anonymous methods and generics which makes Delphi 2009 the minimum supported version.
泛型和匿名方法的使用使得这个单元与 Delphi 2007 完全不兼容。
如果您希望在 Delphi 2007 和 OTL 中使用像 Parallel.For
这样的结构,那么您必须自己向后移植 OtlParallel
。如果没有匿名方法,这是很难做到的,也很难实现同样流畅的代码风格。您将不得不使用过程类型而不是匿名方法。而且您将不得不手动实施闭包。
所以不用
TProc = reference to procedure;
你会用
TMethod = procedure of object;
然后为了实现它,您创建一个 class 或使用无参数方法记录。您需要添加任何需要的状态作为该类型的成员,并填充这些成员。这本质上是手动实现带有变量捕获的闭包。你需要处理一生。确保实例的寿命超过并行循环。
祝你好运!
我下载了 OTL http://www.omnithreadlibrary.com/
编译D2007 grouproj,安装包,没有问题。
然后我创建一个使用 OtlParallel 单元的简单控制台应用程序,当然,我将 OtlParallel 和一些其他 pas 文件添加到项目中。
但它抱怨找不到 Generics.Collections。
High-level abstractions are implemented in the OtlParallel unit. They are all created through the factory class Parallel. High-level code intensively uses anonymous methods and generics which makes Delphi 2009 the minimum supported version.
泛型和匿名方法的使用使得这个单元与 Delphi 2007 完全不兼容。
如果您希望在 Delphi 2007 和 OTL 中使用像 Parallel.For
这样的结构,那么您必须自己向后移植 OtlParallel
。如果没有匿名方法,这是很难做到的,也很难实现同样流畅的代码风格。您将不得不使用过程类型而不是匿名方法。而且您将不得不手动实施闭包。
所以不用
TProc = reference to procedure;
你会用
TMethod = procedure of object;
然后为了实现它,您创建一个 class 或使用无参数方法记录。您需要添加任何需要的状态作为该类型的成员,并填充这些成员。这本质上是手动实现带有变量捕获的闭包。你需要处理一生。确保实例的寿命超过并行循环。
祝你好运!