asp.netには、同時に実行されている複数のスレッドが含まれているためです。
したがって、2つのスレッドがasp.net httpcontext Cacheから取得したオブジェクト(単純または複雑)にアクセスする場合。
これらの2つのtheadが同時にオブジェクトを変更/読み取りしようとした場合、これはそのオブジェクトの状態の問題につながる可能性がありますか?
では、どのような予防策を講じるべきですか?
たとえば、オブジェクトを操作しているときにオブジェクトをロックすることを考えていますか?(これによりパフォーマンスの問題が発生しませんか?)
または、キャッシュからオブジェクトを取得するときに、そのオブジェクトからコピーを作成する必要がありますか?
または多分私はこの問題についてまったく心配する必要はありませんか?
ありがとう
2 に答える
0
5年以上のASP.NET開発プロジェクトで、これが心配な状況に遭遇したことはありません。
そうは言っても...あなたは確かにどんなアイテムでも問題なく読むことはないでしょう。頻繁に変更したいオブジェクトがある場合、そもそもなぜそれがキャッシュにあるのですか?頻繁に変更する必要がない場合は、オブジェクトをロックしてもパフォーマンスの問題にはなりません。
于 2010-09-08T22:40:35.513 に答える
0
問題のコンテキストに基づいてこれを決定する必要があります。1つのサイズですべてのソリューションに適合しますが、ここでは機能しません。データを読み取るだけの場合は、スレッドの問題は発生しません。これに頻繁にデータを書き込む場合は、キャッシュを使用しても意味がありません。少しの混合とキャッシュがパフォーマンスなどに役立つ場合は、通常のスレッド同期手法(リーダーライターロックなど)を使用するか、オブジェクトへの変更によって常に新しいオブジェクトが作成されるようにオブジェクトを不変にする必要があります。新しいオブジェクトはキャッシュ内の古いオブジェクトを置き換える必要があるため、この選択はそれ自体のスレッド化の問題につながります。
于 2010-09-09T13:33:36.297 に答える