社区
C#
帖子详情
C# 多线程问题
T253396332
2010-05-05 09:43:20
我有一个list<string>变量 ,其中保存了10万条数据,我现在想开10条线程读里面的数据,其中线程1读1,11,21这样数据,线程2读2,12,22这样的数据 因此类推。 希望这些线程能同时读取而不用锁住,不知道可以实现吧 如果能实现,望高手指点!
如果不能实现 ,也望高手给出一个好的解决方案 谢谢!
...全文
204
17
打赏
收藏
C# 多线程问题
我有一个list变量 ,其中保存了10万条数据,我现在想开10条线程读里面的数据,其中线程1读1,11,21这样数据,线程2读2,12,22这样的数据 因此类推。 希望这些线程能同时读取而不用锁住,不知道可以实现吧 如果能实现,望高手指点! 如果不能实现 ,也望高手给出一个好的解决方案 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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楼的方案
C#
多线程
编程实战Code源代码
C#
多线程
编程实战Code源代码 资源是从华章出版社官网下载的
c#
编写串口通讯代码
多线程
实现
c#
编写串口通讯代码
多线程
实现 对串口通信测试具有极大的参考价值
c#
多线程
+队列实现类似QQ消息提示框
c#
多线程
+队列实现类似QQ消息提示框。 需要看效果的请到csdn论坛: http://bbs.csdn.net/topics/390441617
c#
Winform异步线程刷新UI
使用开发工具为VS2013;.net:4.0
多线程
异步刷新ui界面,实时获取任务进度并进行反馈。
C#
基于控制台的
多线程
下载程序
C#
基于控制台的
多线程
下载程序,
多线程
分块下载,支持断点续传。可以试着改一下做成自己的下载工具。
C#
110,534
社区成员
642,575
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章