내 응용 프로그램에서 float 숫자 계산 (신경망)이 많이 발생하는 멀티 스레딩을 구현하려고합니다.배열을 업데이트하는 다중 스레드
필자는 함수 외부에 필요한 계산과 업데이트 배열을 만드는 함수를 작성했습니다. 내 실제, 단일 스레드 코드는 다음과 같습니다 (더 나은 이해를 위해 간체) :
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 스레딩 기술을 사용하는 방법을 모르는 (?) 등등. 뭔가 추가 스레드를 하나 만들고 대리자를 사용하여 폼의 일부 컨트롤을 업데이트하는 방법을 알고 있습니다.
정확하게 동일한 일을하고 서로 경쟁하는 2-8 스레드로 작업하는 방법을 알지 못합니다.
질문 1은 -이 문제를 해결할 수 있습니까? 나는 어떻게 시작 해야할지 모르겠다. Niko Drašković에 의해 해결됨
EDIT : 질문 2는 lock() 메소드가 읽기 및 쓰기 용으로 배열을 잠급니다.
[잠금] (http://msdn.microsoft.com/en-us/library/c5kehkcz%28v=vs.80%29.aspx)을 보았습니까? – neeKo
아니, 나는하지 않았다. 내 대답 인 것 같지만 팁이 좀 더 필요해. 추가 질문을 추가합니다. – Kamil