Я написал эту консольную программу:Как синхронизировать несколько потоков
static void Main(string[] args)
{
object sync = new object();
Thread[] t = new Thread[10];
int count = 0;
for (var i = 0; i < t.Length; i++)
{
t[i] = new Thread(() =>
{
lock (sync)
{
int inc = count;
Console.WriteLine("Count: {0}", count);
count = inc + 1;
}
});
}
foreach (var t1 in t)
{
t1.Start();
}
foreach (var t1 in t)
{
t1.Join();
Console.WriteLine("\nFinal Count= {0}", count);
Console.ReadKey();
}
}
я получаю этот результат на выходе:
Count: 0
Count: 1
Count: 2
Count: 3
Count: 4
Count: 5
Count: 6
Count: 7
Final Count= 7
Count: 8
Count: 9
и когда я запускаю приложение несколько раз я получаю больше, разные результаты , но я хочу, чтобы увидеть этот результат:
Count: 0
Count: 1
Count: 2
Count: 3
Count: 4
Count: 5
Count: 6
Count: 7
Count: 8
Count: 9
Final Count= 10
почему это возвращение другого Ресул ts и как это исправить?
'Count = вкл + 1;' имеет мало смысла. Опубликовать фактический код. –
«Конечный счет» является достижимым, но если вы хотите, чтобы номера были в порядке, просто не используйте потоки. –