Несколько 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
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы