我有以下一段代碼(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方法的代碼嗎? – Chandu
爲什麼在下一個循環中使用'totalThread'作爲第一個循環而'num_threads'?無論如何,這個問題可能與你的'Work'方法有關,因爲上面的代碼應該沒問題。 – dlev
再說一遍,不知道什麼是DoSomething()或DoSomethingElse(),看起來很難說。 totalOperation有多大?另外,你可以說'op = r.Next(2)'。 – dlev