我是编程的初学者,我想知道同步线程。
我有一个 WinForms 程序,它需要为每个 cpu 内核创建线程并运行一个方法指定的次数。
我在嵌套循环中设置并运行了线程,但我的输出如下:
thread: 0, run: 1, time: xxx
thread: 1, run: 1, time: xxx
thread: 2, run: 1, time: xxx
thread: 3, run: 1, time: xxx
thread: 1, run: 2, time: xxx
thread: 2, run: 2, time: xxx
等但是我希望输出显示数据,如下所示:
thread: 0, run: 1, time: xxx
thread: 0, run: 2, time: xxx
thread: 0, run: 3, time: xxx
thread: 1, run: 1, time: xxx
thread: 1, run: 2, time: xxx
thread: 1, run: 3, time: xxx
等等
在我的表单中,我创建线程并从一个单独的类中调用一个方法,就像这样;
SomeClass[] thisArray = new SomeClass[numThreads];
for (int runNumber = 1; runNumber <= numberOfRuns; runNumber++)
{
for (int i = 0; i < numThreads; i++)
{
thisArray[i].mThread = new Thread(thisArray[i].StartMethod);
thisArray[i].mThread.Start();
thisArray[i].mThread.Join();
//Display thread id and number of runs
this.tBoxW.AppendText(string.Format("") + Environment.NewLine);
this.tBoxW.AppendText(string.Format("Thread Id: ") + i.ToString() +
Environment.NewLine);
this.tBoxW.AppendText(string.Format("Number of Runs {0}", numberOfRuns) +
Environment.NewLine);
}
}
SomeClass 位于 SomeClass.cs 中,并提供了 StartMethod() 方法,该方法通过一系列方程运行。
为了以我想要的方式获得输出,我是否正确地假设我需要同步线程?或者也许有更简单的方法?
当我刚开始使用线程时,我正在寻找实现所需输出的最简单方法。
任何帮助将不胜感激。感谢您花时间看我的问题。