Языки программирования. Практический сравнительный анализ


Языки программирования. Практический сравнительный анализ - стр. 223


Все происходит так, как будто из задачи К обращаются к процедуре R, объявленной в задаче М. Выполнение оператора приема в задаче М означает тем самым и выполнение оператора вызова в задаче К (и тем самым завершение рандеву категории R). Другими словами, задачи К и М как бы сливаются на время рандеву, а затем продолжают работать независимо до следующего возможного рандеву.

Оператор отбора входов (ОТБИРАЮЩИЙ оператор, оператор select) позволяет мастеру ожидать сразу нескольких рандеву и отбирать (из заказанных!) те рандеву, которые удовлетворяют указанным в этом операторе УСЛОВИЯМ ОТБОРА.

 

4.14.4. Продолжение примера. Разделяемые ресурсы. Режим взаимного исключения с развязкой

Из обзора языка Ада ясно, что А и С должны быть отдельными задачами. А вот что такое "очередь"?

Мы уже говорили о том, что нельзя допускать одновременное исполнение процедур "в_очередь" и "из_очереди". А если оставить "очередь" пакетом, доступным как задаче А, так и задаче С, то именно так и получится - пока задача А будет исполнять "в_очередь", передавая в буфер приготовленный разбор, задача С может обратиться к процедуре "из_очереди", доставая разбор для синтеза ответа. Читателю предлагается самому разобраться с тем, почему может нарушиться работа очереди.

Очередь представляет в нашем случае так называемый РАЗДЕЛЯЕМЫЙ РЕСУРС. Доступ к такого рода ресурсу из параллельно работающих задач следует организовывать в так называемом РЕЖИМЕ ВЗАИМНОГО ИСКЛЮЧЕНИЯ. Это значит, что когда доступ к очереди имеет задача А, то его не может иметь задача С, и наоборот. С другой стороны, нужно обеспечить РАЗВЯЗКУ доступа к ресурсу, т.е. обеспечить, чтобы количество последовательных обращений к очереди из задачи А не было жестко связано с количеством последовательных обращений из задачи С. Иначе очередь не сможет играть роль буфера, позволяющего А и С при необходимости работать с разной скоростью.

Итак, нужно организовать доступ к разделяемому ресурсу в режиме взаимного исключения с развязкой.


- Начало -  - Назад -  - Вперед -