当您锁定一个对象时,该对象是否在整个应用程序中都被锁定?
例如,这个来自 C# 3.0 的简而言之第 19.6.1 节“线程安全和 .NET 框架类型”中的片段:
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 会自动使您的静态方法线程安全吗?还是这取决于开发商?
谢谢,约翰