Несколько 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
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д