当你锁定一个对象时,该对象锁定在整个应用程序中?锁(objlocker)是否使该对象线程安全的应用程序广泛?并且静态成员是否自动线程安全?
例如,该段从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自动使您的静态方法线程安全吗?或者是由开发人员决定?
感谢, 约翰
感谢您为我清理它。 – John 2008-11-08 04:33:53