首页 新闻 会员 周边 捐助

c#多线程遇到问题,求解决~

0
悬赏园豆:20 [已解决问题] 解决于 2014-04-14 15:52

图一:Main函数,图二:委托代理函数(带参数)

图三:如图一,使用for循环创建了20个线程,并初始化每一个线程,之后再使用for循环,依次开启所有的线程,然后进行计算!思路是这样,但是真正进行开启的时候却报错了,索引出错,调试了实在不知道那边出错了,th数组是有值的!

望大婶解决啊!

辉辉爱编程的主页 辉辉爱编程 | 初学一级 | 园豆:180
提问于:2014-04-14 15:42
< >
分享
最佳答案
0

出错后,你也没看看 i 的值是多少吗?

改成这样:

th[j] = new thread(new threadstart(delegate{sayhellow(text[j],count[j];}));

收获园豆:20
Launcher | 高人七级 |园豆:45050 | 2014-04-14 15:47

在给th数组赋值的时候是没有错误的,但是在启动th的循环中出的这个错误!嗯,我先按照这样改试试

辉辉爱编程 | 园豆:180 (初学一级) | 2014-04-14 15:49

在给th数组赋值的时候是没有错误的,但是在启动th的循环中出的这个错误!嗯,我先按照这样改试试

辉辉爱编程 | 园豆:180 (初学一级) | 2014-04-14 15:49

膜拜啊!其实我也试了将i赋值给j,但是后面的忘了改,使用的i就错了,但是换成j就ok了!

改过之后就有值了。。给力!

辉辉爱编程 | 园豆:180 (初学一级) | 2014-04-14 15:52

但是出现了个问题,使用多线程耗时0.0910052毫秒,直接使用for循环耗时0.0060003毫秒,相差15倍,看来线程也不是越多越好啊!

辉辉爱编程 | 园豆:180 (初学一级) | 2014-04-14 15:57

@辉辉爱编程: 虽然我很想给你详细的分析下 CPU 核心数对多线程的影响,以及多线程的适用场景,但是还是算了吧,我只告诉你一件事情,Console.WriteLine 访问的是共享资源。

Launcher | 园豆:45050 (高人七级) | 2014-04-14 16:00

@辉辉爱编程: 这种情况,你要看下I的值,再看下text和count数组的长度,

吴瑞祥 | 园豆:29449 (高人七级) | 2014-04-14 16:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册