Delphiアプリケーションで使用するスレッドフレームワークを探しています。
現在、私は「<a href="http://otl.17slon.com/index.htm" rel="nofollow noreferrer"> OmniThreadLibrary」を評価しています。これまでのところ、見栄えがよく、必要なすべてを実行しています。
Delphi用の他の「スレッドフレームワーク」はありますか?
(私はD2006とD2009を使用しています)
Delphiアプリケーションで使用するスレッドフレームワークを探しています。
現在、私は「<a href="http://otl.17slon.com/index.htm" rel="nofollow noreferrer"> OmniThreadLibrary」を評価しています。これまでのところ、見栄えがよく、必要なすべてを実行しています。
Delphi用の他の「スレッドフレームワーク」はありますか?
(私はD2006とD2009を使用しています)
フレームワーク自体ではありませんが、AsyncCallsがあります。そのスコープはOmniThreadLibraryとは異なりますが、古いバージョンのDelphiもサポートしています。
Internet Direct(Indy)には、IdThreadSafe.pasにIdThreadおよびスレッドセーフのデータ型が含まれています。
* TIdThreadSafeInteger
* TIdThreadSafeBoolean
* TIdThreadSafeString
* TIdThreadSafeStringList
...そしてもっと
Jediコードライブラリ(JCL)には、同期クラスと関数(約10クラス)も含まれています。
私は過去 10 年間、同様に設計された通信フレームワークとも統合された独自の拡張スレッド フレームワークを開発してきました。この段階では、Delphi 2005-2007 で使用できますが、まもなく Delphi 2009-2010 で使用できるようになります。このアプリケーション開発フレームワークは、任意のスレッドを任意のプロセスで実行できるように設計されており、スレッドが同じプロセスにあるか異なるプロセスにあるかにかかわらず同じ単純なスレッド通信プロトコルを使用するように設計されているため、大規模な分散システムの構築に使用できます。異なるマシンで。
追加機能として、このフレームワークを C#/Visual Studio で実行できるようになったため、このフレームワークを使用して構築された分散システムは、すべて同じ設計手法を使用して Win32 アプリケーションと .NET アプリケーションを混在させることができます。フレームワークはhttp://www.adug.org.au/downloads/CSIFramework.htmlからダウンロードできます。
私のフレームワークで使用されているライブラリは、サイトに表示されているほど広範囲ではありません (そのページを書き直したばかりですが、更新されるまでに 1 日ほどかかる場合があります)。さらに、必要なすべてのファイル (データベース抽象化レイヤーを除く) がフレームワークに含まれているため、フレームワークを使用するためにサードパーティ ライブラリをインストールする必要はありません。
Delphi 以外で使用されるライブラリは次のとおりです。
周辺の Delphi ユニットをいくつか変更しました。1) Delphi 2006 のオープン XML 実装でのメモリ リークを修正し (その後、後の Delphi バージョンで修正されました)、2) サービス アプリケーションをロギング フレームワークに統合し、3) スタンドを統合しました。 -Indy 10 を使用した単独の SOAP サーバー (Delphi 2006 に含まれている Indy 9 ではありません)。
実際には、私のフレームワークは単なるスレッド フレームワークではありませんが、スレッド フレームワークはその一部です。スレッド化フレームワークは、すべてのスレッドをスレッド化されたキューとして実装することによって構築されます。スレッド化されたキュー間で渡される「メッセージ」は、実際には汎用の型付きオブジェクトにパッケージ化されたデータです。これにより、あらゆる方法で構造化されたデータをスレッド間で完全に渡すことができます。メッセージを追加することで非同期的に、またはメッセージを追加して応答としてメッセージを受信することで、スレッド間でメッセージを渡すことができます。スレッド自体はメッセージを受信するために他のスレッドにサブスクライブするため、設計時にスレッド間の結合はありません。
このフレームワークは、通信サーバーとクライアント、およびメインの GUI スレッドを含むように拡張されており、スレッド化されたキューとまったく同じメッセージング インターフェイスを備えているため、メッセージをリモート プロセスに送信したり、GUI に渡したりする際に同じ構文が使用されます。スレッド間で使用されるものとして。このフレームワークは、マルチスレッド開発について何も知らなくても、複数のプロセスと複数のスレッドに展開される分散システムを構築できるように設計されています。
このフレームワークにはこれ以外にも多くの機能があり、私は過去 10 年間でこれを開発するために 2 年以上の努力をしてきました。多層アラーム監視システム (3 つのアプリケーションで 20 を超える異なるクラスのスレッドを使用) に正常に展開されており、現在、このフレームワークを使用して Visual Studio 2008 で分散システムを構築しています。
要するに、シンプルなスレッド化フレームワークだけが必要な場合、これはおそらくやり過ぎです。ただし、複数のアプリケーションにまたがる可能性のある複雑なマルチスレッド システムを開発する場合は、学習曲線を使用する価値があります。
PSその他のいくつかのポイント: