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