Операционные системы, среды и оболочки. Макаренко С.И. - 40 стр.

UptoLike

Составители: 

внести запись в базу данных (шаг A3) не успевает, так как его выполнение
прерывается, например, вследствие завершения кванта времени.
Предположим также, что потоку В также потребовалось внести
сведения об оплате относительно того же клиента N. Когда подходит очередь
потока В, он успевает считать запись в свой буфер (шаг В1) и выполнить
обновление поля Оплата (шаг В2), а затем прерывается. Заметим, что в
буфере у потока В находится запись о клиенте N, в которой поле Заказ имеет
прежнее, не измененное значение.
Когда в очередной раз управление будет передано потоку А, то он,
продолжая свою работу, запишет запись о клиенте N с модифицированным
полем Заказ в базу данных (шаг A3). После прерывания потока А и
активизации потока В последний запишет в базу данных поверх только что
обновленной записи о клиенте N свой вариант записи, в которой обновлено
значение поля Оплата. Таким образом, в базе данных будут зафиксированы
сведения о том, что клиент N произвел оплату, но информация о его заказе
окажется потерянной (рис. 2.4, а).
Сложность проблемы синхронизации кроется в нерегулярности
возникающих ситуаций. Так, в предыдущем примере можно представить и
другое развитие событий: могла быть потеряна информация не о заказе, а об
оплате (рис. 2.4, б) или, напротив, все исправления были успешно внесены
(рис. 2.4, в).
Рис. 2.4. Влияние относительных скоростей потоков на результат решения
задачи
40
внести запись в базу данных (шаг A3) не успевает, так как его выполнение
прерывается, например, вследствие завершения кванта времени.
     Предположим также, что потоку В также потребовалось внести
сведения об оплате относительно того же клиента N. Когда подходит очередь
потока В, он успевает считать запись в свой буфер (шаг В1) и выполнить
обновление поля Оплата (шаг В2), а затем прерывается. Заметим, что в
буфере у потока В находится запись о клиенте N, в которой поле Заказ имеет
прежнее, не измененное значение.
     Когда в очередной раз управление будет передано потоку А, то он,
продолжая свою работу, запишет запись о клиенте N с модифицированным
полем Заказ в базу данных (шаг A3). После прерывания потока А и
активизации потока В последний запишет в базу данных поверх только что
обновленной записи о клиенте N свой вариант записи, в которой обновлено
значение поля Оплата. Таким образом, в базе данных будут зафиксированы
сведения о том, что клиент N произвел оплату, но информация о его заказе
окажется потерянной (рис. 2.4, а).
       Сложность проблемы синхронизации кроется в нерегулярности
возникающих ситуаций. Так, в предыдущем примере можно представить и
другое развитие событий: могла быть потеряна информация не о заказе, а об
оплате (рис. 2.4, б) или, напротив, все исправления были успешно внесены
(рис. 2.4, в).




 Рис. 2.4. Влияние относительных скоростей потоков на результат решения
                                 задачи




                                    40