2011-01-11 6 views
0

キャッシュに格納されたオブジェクトに対して効果的にsynclockできますか?キャッシュ内のオブジェクト上のSynclock

同様:

SyncLock System.Web.HttpContext.Current.Cache("Some Object") 
    'do some stuff that is threadsafe on this cached object' 
End SyncLock 

これは、キャッシュされたオブジェクトを修正することから、他のスレッドを停止するだろうか?

答えて

1

標準キャッシュの場合は、yesです。しかし、キャッシュ内のオブジェクトを置き換える別のスレッドが停止することはありません。そのために別の同期オブジェクトを使用する必要があります。分散キャッシュ(Velocityなど)を使用している場合、必ずしも信頼できるとは限りません。

+0

So ... System.Web.HttpContext.Current.Cache( "Some Object")をシンクロクし、dim =をSystem.Web.HttpContext.Current.Cache( "Some Object")として呼び出すと、実際には2つの異なるオブジェクトを参照していますか? – Peter

+0

はい、別のスレッドがこれらの2つのステートメントの間にSystem.Web.HttpContext.Current.Cache( "Some Object")= newObjectを設定した場合、古いオブジェクトはロックされますが、新しいオブジェクトを取得して処理します。 – MarkXA

関連する問題