オブジェクトをロックすると、そのオブジェクトはアプリケーション全体でロックされますか?
たとえば、C# 3.0 の要約セクション 19.6.1「スレッド セーフティと .NET Framework 型」のこのスニペットは次のとおりです。
static void AddItems( )
{
for (int i = 0; i < 100; i++)
lock (list)
list.Add ("Item " + list.Count);
string[] items;
lock (list) items = list.ToArray( );
foreach (string s in items) Console.WriteLine (s);
}
最初のロック:
lock (list)
list.Add ("Item " + list.Count);
別のスレッドがアクセスできないようにします:
lock (list) items = list.ToArray( );
または両方を同時に実行できますか?
また、CLR は自動的に静的メソッドをスレッド セーフにしますか? それとも開発者次第?
ありがとう、ジョン