Составители:
Рассмотрим, например (рис. 2.3), задачу ведения базы данных клиентов
некоторого предприятия. Каждому клиенту отводится отдельная запись в
базе данных, в которой среди прочих полей имеются поля Заказ и Оплата.
Программа, ведущая базу данных, оформлена как единый процесс, имеющий
несколько потоков, в том числе поток А, который заносит в базу данных
информацию о заказах, поступивших от клиентов, и поток В, который
фиксирует в базе данных сведения об оплате клиентами выставленных
счетов. Оба эти потока совместно работают над общим файлом базы данных,
используя однотипные алгоритмы, включающие три шага.
1. Считать из файла базы данных в буфер запись о клиенте с
заданным идентификатором.
2.
Внести новое значение в поле Заказ (для потока А) или Оплата
(для потока В).
3. Вернуть модифицированную запись в файл базы данных.
Рис. 2.3. Возникновение гонок при доступе к разделяемым данным
Обозначим соответствующие шаги для потока А как Al, A2 и A3, а для
потока В как Bl, B2 и ВЗ. Предположим, что в некоторый момент поток А
обновляет поле Заказ записи о клиенте N. Для этого он считывает эту запись
в свой буфер (шаг А1), модифицирует значение поля Заказ (шаг А2), но
39
Рассмотрим, например (рис. 2.3), задачу ведения базы данных клиентов
некоторого предприятия. Каждому клиенту отводится отдельная запись в
базе данных, в которой среди прочих полей имеются поля Заказ и Оплата.
Программа, ведущая базу данных, оформлена как единый процесс, имеющий
несколько потоков, в том числе поток А, который заносит в базу данных
информацию о заказах, поступивших от клиентов, и поток В, который
фиксирует в базе данных сведения об оплате клиентами выставленных
счетов. Оба эти потока совместно работают над общим файлом базы данных,
используя однотипные алгоритмы, включающие три шага.
1. Считать из файла базы данных в буфер запись о клиенте с
заданным идентификатором.
2. Внести новое значение в поле Заказ (для потока А) или Оплата
(для потока В).
3. Вернуть модифицированную запись в файл базы данных.
Рис. 2.3. Возникновение гонок при доступе к разделяемым данным
Обозначим соответствующие шаги для потока А как Al, A2 и A3, а для
потока В как Bl, B2 и ВЗ. Предположим, что в некоторый момент поток А
обновляет поле Заказ записи о клиенте N. Для этого он считывает эту запись
в свой буфер (шаг А1), модифицирует значение поля Заказ (шаг А2), но
39
Страницы
- « первая
- ‹ предыдущая
- …
- 37
- 38
- 39
- 40
- 41
- …
- следующая ›
- последняя »
