我对C#还相当陌生,请耐心等待。我有点困惑线程安全性。什么情况下是线程安全的,什么情况下不是?
从字段中读取(只是从之前初始化的某个东西中读取)是否总是线程安全的?
//EXAMPLE
RSACryptoServiceProvider rsa = new RSACrytoServiceProvider();
rsa.FromXmlString(xmlString);
//Is this thread safe if xml String is predifined
//and this code can be called from multiple threads?
如果使用for循环枚举数组或列表,访问对象是否总是线程安全的?
//EXAMPLE (a is local to thread, array and list are global)
int a = 0;
for(int i=0; i<10; i++)
{
a += array[i];
a -= list.ElementAt(i);
}
枚举类型(enumeration)是否总是/曾经是线程安全的?
//EXAMPLE
foreach(Object o in list)
{
//do something with o
}
在特定字段进行写入和读取是否可能导致读取错误(一半字段被更改,一半仍然不变)?
感谢您的回答和时间。
编辑:我的意思是如果所有线程只读取并使用对象(不写入或更改)。 (除了最后一个问题,在那里很明显我指的是线程既读又写)。 因为我不知道普通访问或枚举是否线程安全。