0

そこにいるCOM / DCOMの専門家に確認したいだけです...

サーバー上で実行されている Delphi COM EXE があり(スレッドはシングル アパートメントです)、同じ EXE の別のコピーが同じサーバー上で起動します(デュアル コアを備えた 2 つのプロセッサを搭載したサーバーで、タスク マネージャは 4 つの個別のグラフを表示します) ) 交互に待機しますか、それとも別々のコアで実行しますか?

と書いてある記事をどこかで見つけました

「2 つのクライアントが同じオブジェクトを使用する必要がある場合は、交代で使用する必要があります。このスレッド モデルでは、インスタンス データは安全です。グローバル データは、クリティカル セクションまたはその他の形式のシリアライゼーションを使用して保護する必要があります。もちろん、スレッドのローカル変数は複数の呼び出しで信頼できます。」

4

1 に答える 1

4

同じ段落の「同じサーバーからの異なるオブジェクト」の部分を見逃しています。「単一インスタンス化」があるため、COM オブジェクト インスタンスごとに個別のサーバーを取得するため、これらのインスタンスへの呼び出しを並行して処理でき、COM は相互排除を提供する必要がありません。

このように考えてください。スレッド モデルは、スレッド セーフ (同じプロセスのスレッド間で共有されるデータへの同期アクセス) を提供するために存在します。プロセスごとに 1 つのオブジェクトがあるため、もちろん 1 つのオブジェクトへのポインターを別のオブジェクト メソッド呼び出しに渡そうとしない限り、2 つのスレッドが同じオブジェクトにアクセスしようとすることはありません。

于 2010-09-23T06:18:09.463 に答える