私は2種類のアプリケーションでC#を使用しています。1つはWebサービスで、もう1つはMVC3アプリケーションです。
私は両方で同じ問題を抱えています。要求されたときに、分散ノードが機能するレコードを返すメソッドを作成しようとしています。
並行性の問題により、これは危険です。プロセス「A」が作業するレコードを要求すると。データベースがレコードの「A」をチェックアウトする前にプロセス「B」が1つを要求した場合、両方が同じレコードを取得する可能性があり、これはこのシステムに悪影響を及ぼします。
Webサービスには、「GetRecordToProcess」と呼ばれるWebメソッドがあります。同じことを行うコントローラーには、対応するMVC3ActionResultもあります。
WebサービスとMVCアクションは相互に排他的である必要はありません。彼らは実際には2つの異なるテーブルで作業していますが、2つの別々のプロジェクトで同じ問題が発生しました。
私はMutexでこれの動作バージョンを持っていますが、baaaadであるMutex.WaitOneを呼び出すと、プロセスはCPUをほぼ60%まで実行しています。これを行うための簡単な方法の提案はありますか?これは、一般的な分散コンピューティングの要件であることは明らかなようです。私は一般的な解決策を知りません。