У меня есть две темы, t1 и t2.
Они оба добавляют операцию над глобальной переменной с именем count, которая была инициализирована с 0.
t1 делает count++
и t2 делает count+=100
. Сначала я начинаю t1, затем t2, но результат не соответствует моим ожиданиям.
Я что-то не так понял?
Это не поможет, хотя я использовал lock () в двух потоках.
Вот код C #:
private int count = 0;
private object locker = new object();
void run()
{
var t1 = new Thread(Add_1);
var t2 = new Thread(Add_2);
t1.Start();
t2.Start();
}
void Add_1()
{
lock(locker)
{
count++;
Console.WriteLine(count);
}
}
void Add_2()
{
lock(locker)
{
count += 100;
Console.WriteLine(count);
}
}
Иногда печатает
1
101
или
100
101
Я понятия не имею об этом. По моему мнению, у t1 должен быть шкафчик, пока он не закончил свою работу. Но, похоже, у t2 есть шанс добавить счет раньше, чем t1.
Надеюсь, кто-нибудь может мне помочь, спасибо.