首页 新闻 会员 周边

关于多线程的问题

0
悬赏园豆:5 [已解决问题] 解决于 2008-09-07 14:44
<P>Thread[]threads=new Thread[linkcount];<BR>for (int i = 1; i &lt;= linkcount; i++)</P> <P>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threads[i] = new Thread(new ThreadStart(getlink));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;threads[i].Start();</P> <P>}这样写是同时执行一个功能吗,多线程的运行机制是什么样的啊,我想让它们同时进行,是不是不能用循环啊?给点意见</P>
小孤狸的主页 小孤狸 | 初学一级 | 园豆:7
提问于:2008-06-26 17:38
< >
分享
最佳答案
0
你那个代码,没有问题 对于单核CPU,没有同时 因为都在争用CPU 的时间片 但多核和多CPU 就不同了 Start后,线程就会工作了, 但他们交换数据的时候,容易出现竞争, 如果处理不好,也肯会出现死锁的
G yc {Son of VB.NET} | 老鸟四级 |园豆:2006 | 2008-06-27 11:09
其他回答(4)
0
严格来说,没有同时运行的概念。 首先,CPU限制了可以并行进行的线程数。另外,操作系统的线程调度机制也会影响到线程的执行顺序。
Colin Han | 园豆:3041 (老鸟四级) | 2008-06-26 18:33
0
他们是在用 一个 时间片 应用程序 根据优先级 去抢时间片,权限高的会 有先 ,就像你在任务管理器里 看到的一样
小田好好先生 | 园豆:60 (初学一级) | 2008-06-27 08:52
0
可以用循环,最好用ThreadPool类这个类会自动调度你的工作线程。 “严格来说,没有同时运行的概念” 这句话在单cpu的系统中是正确的,如果是多cpu就可以同时运行了。
玉开 | 园豆:8822 (大侠五级) | 2008-06-27 09:20
0
单核不可以同时运行,都是时间片分割....操作系统
Jared.Nie | 园豆:1940 (小虾三级) | 2008-06-27 10:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册