0

私は問題ステートメントの解決策を見つけようとしています。簡単にするために、アプリケーションはコンソールアプリになります。データベースには約10000行が含まれています。10個のスレッドを生成し、各スレッドがデータベースから5個のレコードを処理するac#アプリケーションを開発する必要があります。これで、同じアプリケーションを別のマシンで実行することになります。したがって、アプリケーションのインスタンスが2つあり、各アプリケーションは5000行を処理する必要があり、レコード上で重複しないようにする必要があります。また、各アプリケーションで実行されているスレッドIDを表示する必要がある中央コントローラーが必要です。この問題を解決するためのここでのポインタは素晴らしいでしょう。

4

2 に答える 2

2

私はヤクブに同意します。個別のインスタンスが互いに直接通信するようにしたい場合は、Two Generals 問題 (http://en.wikipedia.org/wiki/Two_Generals%27_Problem) を読み、ノンブロッキングをどのように設計するかを検討する必要があります。レースのないランデブー。

于 2012-05-01T09:12:14.387 に答える
2

DB に「Processing Status」列を作成すると、各インスタンスは、レコードのステータスを変更することで、処理中のレコードにマークを付けます。

もう 1 つの解決策は、キューまたはサービス ブローカを使用することです。各インスタンスはメッセージを選択して、共通のキューからレコードを処理します。ここで、キューにデータを入力する別のプロセスが必要になります。

WCF を使用してマシン間で通信し、作業を同期することは、私見では複雑すぎて正しく行うのが難しいものです。

于 2012-05-01T08:24:56.250 に答える