Несколько Thread, переменные - C#
Формулировка задачи:
Доброе время суток!
При запуске нескольких потоков переменные внутри
Calc()
изменяются из "соседних" потоков. Как иначе можно оформить данную задачу, чтобы избежать такого поведения ? for (int i = 0; i < tds.Capacity; i++)
{
tds[i] = new Thread(delegate() { Calc(int x, int y); });
tds[i].Start();
}Решение задачи: «Несколько Thread, переменные»
textual
Листинг программы
using System.Threading.Tasks;
namespace CyberForum
{
public class YourClass
{
private int x, y;
public void Run()
{
int count = 10;
RunInternal(count);
}
private void RunInternal(int count)
{
ParallelOptions options = new ParallelOptions
{
MaxDegreeOfParallelism = 4
};
Parallel.For(0, count, options, Calculate)
}
// параметр index нужен только для соответствия сигнатуре вызова метода Parallel.For
// и больше ни на что не влияет
private int Calculate(int index)
{
int localX = x; int localY = y;
Calc(localX, localY);
}
private void Calc(int x, int y)
{
// do something with x and y
}
}
}