ロックと正確に何が起こるかについて、職場で話し合いました。この議論のきっかけとなったコードは次のとおりです。
string name = (string)context.Cache[key];
if (String.IsNullOrEmpty(name)){
lock (typeof(string)){
name = (string)context.Cache[key];
//.. other code to get the name and then store in the cache
}
}
コードが名前を取得してキャッシュに保存している間、他に何も中断しないように、キャッシュ内の値を探し、そこにない場合はロックを取得します。
私たちの議論は、(typeof(string)) が物事を行うための最良の方法であるかどうか、および正確には何が最善であるかに焦点を当てました。
私の質問は、 lock(typeof(string)) が正確に何をするのですか? ロックに使用されるローカル文字列を作成しますか、それともより広い範囲で何かを作成するため、安全ではない可能性があります。