ある時点でマルチスレッドしたいプログラムがあります。私たちはビジネスルールにCSLAを使用しています。私たちのプログラムの1つの場所では、BusinessListオブジェクトを繰り返し処理し、一度に1行ずつデータに対していくつかの健全性チェックを実行しています。行数を約10k行に増やすと、プロセスを実行するのに(約1分)時間がかかります。もちろん、これはTPLのビットを使い、これをマルチスレッド化するのに最適な場所のように聞こえます。マルチスレッドCSLA.NET
私は多年にわたり多大な量のマルチスレッドを行ってきました。だから、シングルスレッドからマルチスレッドへの切り替えの落とし穴を理解しています。私はCSLAルーチン内でコードが爆破されたことに驚きました。これは、CSLA PropertyInfoクラスの背後にあるコードに関連しているようです。
、当社のビジネス・オブジェクト・プロパティーのすべては、このように定義されています。
public static readonly PropertyInfo<string> MyTextProperty = RegisterProperty<string>(c => c.MyText);
public string MyText {
get { return GetProperty(MyTextProperty); }
set { SetProperty(MyTextProperty, value); }
}
は、私はマルチスレッドとCSLAについて知る必要があるものはありますか?書面による書類には記載されていない警告がありますか(私はまだ何も発見していません)。
--edit ---ところで
:私はConcurrentBagにすべての行を投げた後、袋が空になるまで、ちょうど袋からオブジェクトをつかむ5かそこらの作業を産卵を経由して、私のマルチスレッドを実装方法。だから私は問題が私のコード内にあるとは思わない。
これを確認する資料はありますか?それはかなり目障りなデザイン欠陥のようだ。 –
私の経験によれば、ほとんどのCSLAビジネスオブジェクトには、スレッドセーフティが組み込まれている必要はありません。必要が生じた場合、ビジネスオブジェクトをスレッドセーフにすることは、現在開発者次第です。 –