列表在.NET中的不同线程之间共享

joh*_*ohn 2 .net c# multithreading list

我在一个类中有一个静态List,它将被不同的线程访问,每个线程都从列表中添加,读取和删除它自己的唯一项.我想知道我是否必须担心使这个变量线程安全,因为即使线程之间共享相同的List对象,它们也只修改自己的唯一项

Nic*_*nko 10

您必须通过锁定或通过例如ReaderWriterLockSlim实现线程安全访问.

变量本身(List <>)是线程安全的,如果你在第一次分配后没有修改它(通过new),但是元素访问必须是线程安全的(因为你说你在列表中添加/删除元素因此改变它的状态)

顺便说一句,如果线程修改了自己的项目,为什么要共享它们呢?那么你实施了什么?你为什么这样组织?如果您显示详细信息,也许有更好的建议.