通过索引从列表中获取元素是线程安全的吗?
var list = new List<int>();
...
var a = list[i]; //executed from multiple threads. Should this be protected?
最佳答案
它绝对是线程安全的... ...只要您能确保列表不被更改。即使添加项目也会让您进入“未定义”的领域(尽管根据实现它可能会起作用)。
所以,只读 - 是的。读取+操作:否。
注意:只要 list[5] 是同一个对象,就可以更改 lsit 中的项目。该列表并不关心。并不是说它会起作用 - 因为根据您在此处要更改的内容,这将是您与列表中的对象的契约(Contract)。对于整数,你显然不应该更新它们。
关于c# - 通过索引从 List 获取元素是否线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21814154/