【发布时间】:2011-09-07 02:11:58
【问题描述】:
我有以下一段代码 (C#):它正确吗?
Thread[] threads = new Thread[totalThread];
for (int i=0; i<totalThread; i++) {
threads[i] = new Thread(new ThreadStart(Work));
}
sw.Start();
for (int j=0; j<num_threads; j++) {
threads[j].Start();
}
for (int k=0; k<num_threads; k++) {
threads[k].Join();
}
sw.Stop();
sw 是秒表,work 是某种方法。我想使用几个线程来计时这个方法,但整个事情都冻结了(似乎它没有加入)。我需要知道我的线程处理是否良好,或者我是否搞砸了。如果是后者,很明显我的问题在于我正在调用的方法,而不是线程管理。谢谢。
【问题讨论】:
-
一切看起来都很好。可以发一下 Work 方法的代码吗?
-
为什么在第一个循环中使用
totalThread,在接下来的两个循环中使用num_threads?无论如何,问题可能出在您的Work方法上,因为上面的代码应该没问题。 -
再说一次,不知道
DoSomething()或DoSomethingElse()长什么样,很难说。totalOperation有多大?另外,你可以直接说op = r.Next(2)。 -
发布 DoSomething() 方法,或者如果它们太大,用假人替换它们。没有他们,这不是一个真正的问题。
-
@Henk 从技术上讲,我认为 OOT 会更多,并被转移到 Codereview
标签: c# multithreading