我试图在我的应用程序中实现多线程,这会进行大量的浮点数计算(神经网络)。
我编写了在该函数之外进行必要计算和更新数组的函数。我实际的单线程代码如下所示(为了更好理解而进行了简化):
class MyClass
{
// this array after all calculations should contain
// result of only one calculation,
// that returned smallest value in one of array fields
// (smallest neural network error)
float[] bestResult;
// runs calculations on all "sets of data"
public void findBestResult(void)
{
foreach (something...) // data rows from database cached in one array
{
calculate(x[]);
}
}
// calculates one "set of data"
public void calculateAndUpdateResultIfBetter(float[] inputData)
{
if (bestResult[0] > calculatedData[0])
bestResult = calculatedData; // update only if condition is true
}
}
我是低级程序员,我不知道如何使用高级(?).NET 线程技术,使用 Synchronize 等。我知道如何为某事创建一个额外的线程并使用委托更新表单上的一些控件。
我不知道如何使用 2-8 个线程做完全相同的事情并相互竞争。
问题 1 是 - 你能帮我解决这个问题吗?我不知道如何开始。由 Niko Drašković 解决
编辑:问题 2 是 - lock() 方法会锁定我的数组以进行读写吗?