图一:Main函数,图二:委托代理函数(带参数)
图三:如图一,使用for循环创建了20个线程,并初始化每一个线程,之后再使用for循环,依次开启所有的线程,然后进行计算!思路是这样,但是真正进行开启的时候却报错了,索引出错,调试了实在不知道那边出错了,th数组是有值的!
望大婶解决啊!
出错后,你也没看看 i 的值是多少吗?
改成这样:
th[j] = new thread(new threadstart(delegate{sayhellow(text[j],count[j];}));
在给th数组赋值的时候是没有错误的,但是在启动th的循环中出的这个错误!嗯,我先按照这样改试试
在给th数组赋值的时候是没有错误的,但是在启动th的循环中出的这个错误!嗯,我先按照这样改试试
膜拜啊!其实我也试了将i赋值给j,但是后面的忘了改,使用的i就错了,但是换成j就ok了!
改过之后就有值了。。给力!
但是出现了个问题,使用多线程耗时0.0910052毫秒,直接使用for循环耗时0.0060003毫秒,相差15倍,看来线程也不是越多越好啊!
@辉辉爱编程: 虽然我很想给你详细的分析下 CPU 核心数对多线程的影响,以及多线程的适用场景,但是还是算了吧,我只告诉你一件事情,Console.WriteLine 访问的是共享资源。
@辉辉爱编程: 这种情况,你要看下I的值,再看下text和count数组的长度,