ニュースグループでも次の質問をしました: devzone.advantagedatabase.com, Advantage.Delphi
完全を期すために、そのスレッドの残りの部分からさらに質問/回答を追加します。
私に尋ねてください):
現在、スレッド内のクエリの多くは、TAdsConnection オブジェクトに関連付けられていません。これらの「孤立した」クエリを使用するためにスレッドごとに接続を作成する予定ですが、これは大規模なアプリケーションであり、これには時間がかかります。また、TAdsSettings オブジェクトの唯一の非デフォルト プロパティはサーバー タイプ セットであり、これは接続コンポーネントでも設定できると確信しています。したがって、すべてのクエリが接続にリンクされると、設定コンポーネントは必要なくなります。代わりに、設定 API を直接呼び出すことを検討します。
それまでの間、スレッド化と、接続コンポーネントが割り当てられていないクエリについて質問があります。複数のスレッドのクエリが 1 つの接続オブジェクトを共有する場合、クエリは同時にではなく連続して実行されることをヘルプ ファイルから指摘しました。各スレッドに接続オブジェクトがある場合、これは問題になりませんが、接続オブジェクトが割り当てられていないクエリについて疑問に思っています。マルチスレッドの同時実行性の観点から、それらは独立した接続上にあると見なされますか、それとも同じ接続上にあると見なされ、互いに譲歩する必要がありますか?
回答 (ジェレミー):
これに対処する必要があります。接続のグローバル リストを検索して、同じパスを持つ接続を見つけるだけで、その接続を使用します。マルチスレッド アプリケーションでは不向きです。
したがって、Jeremy の回答から、スレッドごとに少なくとも 1 つの TAdsConnection オブジェクトを作成し、すべてのクエリがそれにアタッチされていることを確認するのが最善です。そうしないと、シリアル化が発生する可能性があります。