OTL http://www.omnithreadlibrary.com/をダウンロードしました
D2007 grouproj をコンパイルし、問題なくパッケージをインストールします。
次に、OtlParallel ユニットを使用する単純なコンソール アプリケーションを作成します。もちろん、OtlParallel とその他のいくつかの pas ファイルをプロジェクトに追加します。
しかし、Generics.Collections が見つからないと文句を言います。
OTL http://www.omnithreadlibrary.com/をダウンロードしました
D2007 grouproj をコンパイルし、問題なくパッケージをインストールします。
次に、OtlParallel ユニットを使用する単純なコンソール アプリケーションを作成します。もちろん、OtlParallel とその他のいくつかの pas ファイルをプロジェクトに追加します。
しかし、Generics.Collections が見つからないと文句を言います。
ドキュメントには次のように記載されています。
高レベルの抽象化は OtlParallel ユニットに実装されています。それらはすべて、ファクトリ クラス Parallel を通じて作成されます。高レベル コードでは匿名メソッドとジェネリックが集中的に使用されているため、Delphi 2009 はサポートされる最小バージョンになっています。
ジェネリックと匿名メソッドの両方を使用すると、このユニットは Delphi 2007 と完全に互換性がなくなります。
Delphi 2007 や OTLのような構造を使用したい場合は、自分Parallel.For
でバックポートする必要がありOtlParallel
ます。匿名メソッドがなければ、これを実行して同じ流動的なスタイルのコードを実現することは非常に困難です。匿名メソッドの代わりに手続き型を使用する必要があります。また、クロージャーを手動で実装する必要があります。
したがって、使用する代わりに
TProc = reference to procedure;
あなたが使うだろう
TMethod = procedure of object;
そして、これを実装するには、パラメーターなしのメソッドでクラスまたはレコードを作成します。タイプのメンバーとして必要な状態を追加し、それらのメンバーを設定する必要があります。これは本質的に、変数キャプチャを使用したクロージャの手動実装です。そして、あなたは生涯に対処する必要があります。インスタンスが並列ループより長く存続することを確認してください。
幸運を!