List可以被多线程访问吗?我计划在多个线程之间共享一个列表。该列表将在更改期间被锁定,这种情况很少见。如果我同时从不同线程对列表进行多次迭代,是否存在线程安全问题?如果可以(并且如果可以使用.NET4),请使用BlockingCollection:提供阻塞和IProducerConsumerCollection以实现IProducerConsumerCollection线程安全集合。如果不是,则完全封装列表并添加线程安全的方法来访问列表的状态。不要将对列表的引用公开或从任何方法返回它-始终封装引用,以便您可以保证对它的所有访问都被锁定。List不是一个线程安全的类,但是如果你每次读/写时都锁定它,那么应该没有任何问题。根据文档:此类型的公共静态(在VisualBasic中共享)成员是线程安全的。没有实例成员保证是线程安全的。List可以同时支持多个读者,只要不修改集合即可。枚举集合本身并不是一个线程安全的过程。在枚举与一个或多个写访问争用的极少数情况下,确保线程安全的唯一方法是在整个枚举过程中锁定集合。要允许多个线程访问一个集合进行读写,您必须实现自己的同步。列表通常不是线程安全的。拥有多个读者不会造成任何问题,但是,您不能在阅读时写入列表。所以你需要锁定读写,或者使用像System.Threading.ReaderWriterLock这样的东西(允许多个读者但只允许一个作者)。如果您要问的话,它可以同时从多个线程读取。如果是这样,请考虑读写锁。以上是C#学习教程:List可以被多线程访问吗?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
