複数のASP.NETワーカースレッドアクセスからの問題を防ぐために、ASP.NETキャッシュのオブジェクトを処理するためにどのような手法を使用する必要がありますか?

StackOverflow https://stackoverflow.com/questions/3672281

質問

ASP.NETには、同時に実行されている複数のスレッドが含まれているためです。
したがって、2つのスレッドがASP.NET HTTPContextキャッシュから得たオブジェクト(シンプルまたは複雑な)にアクセスする場合。
これらの2つの端が同時にそれを変更/読み取ろうとした場合、これがそのオブジェクトの状態の問題につながることはできませんか?
では、どのような予防策を実装すべきでしょうか?
たとえば、オブジェクトを使用してオブジェクトをロックする可能性があると考えていますか? (これがパフォーマンスの問題を引き起こすことはありませんか?)
それとも、キャッシュからオブジェクトを取得するとき、そこからコピーを作成する必要がありますか?
それとも、この問題について心配する必要はないのでしょうか?
ありがとう

役に立ちましたか?

解決

問題のコンテキストに基づいてこれを決定する必要があります。すべてのソリューションに適合する1つのサイズは、ここでは機能しません。データのみを読んでいる場合、スレッドの問題はありません。これに頻繁にデータを書いている場合は、キャッシュを使用して無意味です。ちょっとした混合物とキャッシュがパフォーマンスなどに役立つ場合、通常のスレッド同期テクニック(リーダーライターロックなど)に頼る必要があるか、オブジェクトの変更が常に新しいオブジェクトを作成する場合、オブジェクトを不変にする必要があります。新しいオブジェクトがキャッシュ内の古いオブジェクトを置き換える必要があるため、その選択は独自のスレッディングの問題につながります。

他のヒント

5年以上のASP.NET開発プロジェクトで、これが心配だった状況に出くわしたことはありません。

そうは言っても...あなたは確かに問題を抱えていないでしょう 読む 任意のアイテム。頻繁に変更したいオブジェクトがある場合、なぜキャッシュに最初からキャッシュにあるのですか?頻繁に変更する必要がない場合は、オブジェクトをロックすることはパフォーマンスの問題ではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top