我使用默认值填充了几个列表<>,将它们粘贴到结构中然后将结构传递给多个线程.每个线程都有不同的范围,因此线程1将访问列表[0到199]线程2将访问[200 - 400]等.我需要一个锁吗?我什么时候需要它?我可以使用我的多个线程使用锁访问列表.但如果我的主线程想要读取列表中的数据(从不写),我需要锁定吗?我确定我不会,但我想在实施之前询问.
-编辑-
谢谢你们,你回答了我的问题.(只要有人不反驳当前的答案,我会接受一个)
如果您不修改集合,则根本不需要锁定.
如果要使用其中一个线程修改集合,可能需要查看ReaderWriterLock.
彼得的评论是一个值得注意的评论.正如上面的MSDN链接所指出的,如果您使用的是.NET 3.5 ,则应考虑使用ReaderWriterLockSlim类.尽管如此,这个想法是一样的.