У меня есть несколько потоков, которые пишут в один и тот же int.Каждый поток увеличивает целочисленное значение.Какой простой способ синхронизации операции приращения.Оператор блокировки работает только на объекте, поэтому я не могу его использовать.Я пробовал также следующее:
static int number=0;
static void Main(string[] args)
{
ThreadStart ts = new ThreadStart(strtThread);
new Thread(ts).Start();
new Thread(ts).Start();
new Thread(ts).Start();
new Thread(ts).Start();
new Thread(ts).Start();
new Thread(ts).Start();
Console.ReadLine();
}
public static void strtThread()
{
bool lockTaken = false;
Monitor.Enter(number,ref lockTaken);
try
{
Random rd = new Random();
int ee = rd.Next(1000);
Console.WriteLine(ee);
Thread.Sleep(ee);
number++;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
if (lockTaken)
{
Monitor.Exit(number);
}
}
}
Это дает мне следующую ошибку:
Метод синхронизации объекта был вызван из несинхронизированного блока кода.