我需要锁定列表吗?C#

4 c# multithreading locking

我使用默认值填充了几个列表<>,将它们粘贴到结构中然后将结构传递给多个线程.每个线程都有不同的范围,因此线程1将访问列表[0到199]线程2将访问[200 - 400]等.我需要一个锁吗?我什么时候需要它?我可以使用我的多个线程使用锁访问列表.但如果我的主线程想要读取列表中的数据(从不写),我需要锁定吗?我确定我不会,但我想在实施之前询问.

-编辑-

谢谢你们,你回答了我的问题.(只要有人不反驳当前的答案,我会接受一个)

Meh*_*ari 8

如果您不修改集合,则根本不需要锁定.

如果要使用其中一个线程修改集合,可能需要查看ReaderWriterLock.

彼得的评论是一个值得注意的评论.正如上面的MSDN链接所指出的,如果您使用的是.NET 3.5 ,则应考虑使用ReaderWriterLockSlim类.尽管如此,这个想法是一样的.

  • 或者新的和改进的ReaderWriterLockSlim http://msdn.microsoft.com/en-us/library/system.threading.readerwriterlockslim.aspx (2认同)