Выводы по расширенному рандеву
? объявление входа(entry);
? оператор вызова входа;
? оператор приема входа (accept).
Оператор вызова входа аналогичен оператору вызова простой процедуры, он помещается в задачу-клиент.
Оператор приема похож на тело процедуры, но с одной оговоркой: тело процедуры может одновременно исполняться в различных асинхронных процессах, а тело оператора приема — нет.Вызов входа R задачей-клиентом К — это заказ рандеву категории R, свидетельство готовности задачи-клиента К к рандеву с задачей-сервером S, в которой объявлен вход R. Сервер обслуживает заказ задачи К при достижении оператора приема (accept)входа R.
Оператор приема предписывает действия, выполняемые в ходе рандеву. При завершении этих действий обе задачи могут продолжать асинхронную работу. Если задача S достигла оператора приема R раньше, чем появился заказ R, то задача S приостанавливается до появления заказа. Таким образом, условие выполнения рандеву: Готовность клиента & Готовность сервера
596 |
Глава 19. Основные понятия параллельного программирования |
Готовность клиента означает: задача К дошла до вызова входа и заказала рандеву категории R Готовность сервера означает: задача S дошла до оператора приема R и готова выполнить заказ Рандеву заключается в том, что аргументы вызова входа К (из задачи-клиента) связываются с параметрами оператора приема (из задачи-сервера) и выполняется тело оператора приема, при необходимости результаты обработки посылаются из сервера в клиент. Таким образом, задачи К и Б «сливаются» на время рандеву, а затем продолжают работать независимо. |