Я не совсем понимаю, как работают потоки и синхронизация. Я работаю над примером проблемы, которая описывается так:
Существует два потока: P и Q. Переменная counter является общей для обоих потоков.
Модификация счетчика в одном потоке видна другому потоку.
инструкция приращения добавляет единицу к переменной, сохраняя новое значение.
1 global integer counter = 0
2
3 thread P()
4 incr(counter)
5 print counter
6 end
7
8 thread Q()
9 print counter
10 incr(counter)
11 print counter
12 incr(counter)
13 end
Существует три оператора печати, которые выводят значение счетчика. В выходной
В приведенном ниже списке укажите, возможен ли данный вывод, и если да, укажите
инструкции перемежения (с использованием номеров потоков и строк) P и Q, которые
может привести к выходу.
В примере есть вывод 122 возможно ли? который может быть произведен P4, Q9, Q10, P5, Q11, Q12
. Я не могу обернуть голову, как это работает.