C# 多线程问题

T253396332 2010-05-05 09:43:20
我有一个list<string>变量 ,其中保存了10万条数据,我现在想开10条线程读里面的数据,其中线程1读1,11,21这样数据,线程2读2,12,22这样的数据 因此类推。 希望这些线程能同时读取而不用锁住,不知道可以实现吧 如果能实现,望高手指点!
如果不能实现 ,也望高手给出一个好的解决方案 谢谢!
...全文
204 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
饅頭 2010-05-21
  • 打赏
  • 举报
回复
帮顶,受用啦。
qldsrx 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 t253396332 的回复:]
希望这些线程能同时读取而不用锁住,不知道可以实现吧
[/Quote]
其实多线程读取无需加锁,要锁住的情况只有在数据发生了改变的时候,防止其它线程读取到了改变之前的数据,故而加锁,这里不存在这种情况,所以你可以安心的使用多线程读取操作。
skep99 2010-05-05
  • 打赏
  • 举报
回复
楼主,如果你的十个线程是读取并处理数据的话,是很好的方法.
chichenzhe 2010-05-05
  • 打赏
  • 举报
回复
从你的问题出发,我建议用 string[]
因为动态集合list的目的就是可以动态扩建 length
但是如果你本身只是一个 容量 可控制死的 集合,比如 你就10万条数据 那么用数组更好.
用索引来控制 每个线程只操作分配给自己的索引,这样的话 string[] 根本就不需要上锁.
-----------------------------------------------------------------------
从你的需求出发,我建议只用1个固定线程读取数据(读取之后丢入队列),但是对数据有什么操作你可以创建一个线程池来进行操作.这个线程池就负责操作上面的队列.

比如1个线程读(基本无阻塞)
然后10个线程对读到的数据进行操作.
一克代码 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 computerfox 的回复:]
你开10个线程读取,这些线程要耗费多少资源。
直接读取,会很耗时吗?
[/Quote] ....
t316562725 2010-05-05
  • 打赏
  • 举报
回复
每天回帖有分拿!
sxldfang 2010-05-05
  • 打赏
  • 举报
回复
光读取,又不增,也不删,访问不同的数据应该不用锁。
zhao_zps 2010-05-05
  • 打赏
  • 举报
回复
每天回帖有分拿!
zhangjiewoshiwo 2010-05-05
  • 打赏
  • 举报
回复
像你上面说的应该是属于阻塞操作,这样应该是要用锁的,不然会报错,要是不考虑性能的话可以使用挂起跟重启来控制这些线程
T253396332 2010-05-05
  • 打赏
  • 举报
回复
我读取这些数据还要做操作 如果直接读取那就要等那个方法完成了才能读取数据
只在此山中 2010-05-05
  • 打赏
  • 举报
回复
帮顶,你可以试试直接多线程读,访问不同的数据应该不用锁。
q107770540 2010-05-05
  • 打赏
  • 举报
回复
直接放在内存中读取比你开10个线程要节省资源的多
捷哥1999 2010-05-05
  • 打赏
  • 举报
回复
你开10个线程读取,这些线程要耗费多少资源。
直接读取,会很耗时吗?
T253396332 2010-05-05
  • 打赏
  • 举报
回复
我就是怕读取重复的数据 如果谁有这方面的代码 那最好了啊 可以给我参考参考啊
waiwai1015 2010-05-05
  • 打赏
  • 举报
回复
帮你顶
hyblusea 2010-05-05
  • 打赏
  • 举报
回复
只访问,不修改是不用加锁的,而且你的一个对象,只有一个线程在访问,同样也是不需要加锁的

不过还是用单线程先测试吧,估计多线程的效率不会有明显的提升
nashina 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 t253396332 的回复:]
我读取这些数据还要做操作 如果直接读取那就要等那个方法完成了才能读取数据
[/Quote]
如果这种情况用list的话必须得锁上了,

可以考虑 10楼的方案

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧