Контрольные вопросы и упражнения 1.
2. На языке Ada напишите программу с двумя параллельными процессами, в которой семафор обеспечивает условную синхронизацию.
3. Реализуйте механизм монитора на языке Ada. Напишите программу с двумя параллельными процессами, в которой используется монитор.
4. Положим, что режим широковещания поддерживается следующим типом защищенного объекта:
614 |
Глава 19. Основные понятия параллельного программирования |
protected type Broadcast is entry Receive(M : out message); procedure Send(M : message); private New_Message : Message; Message_Arrived : Boolean := False; end Broadcast; Каждый из очереди к Receive должен получить сообщение, посылаемое при вызове send. Напишите реализацию этого типа и прикладную программу, использующую его. 5. На языке Ada напишите программу, реализующую модель мультиплексора на четыре входа с использованием задач. 6. Возможно ли реализовать операции wait и signal семафора с помощью сообщений send и receive из четвертого упражнения? Напишите две процедуры signal(P) и wait(P), которые взаимодействуют с помощью сообщений, но семантически имеют тот же смысл, что и операции семафора wait и signal. Какие проблемы с атомарностью возникают при таком решении? Операции wait и signal могут использоваться множеством задач, применяющих один и тот же семафор. Как можно обобщить сообщения send и receive, чтобы они могли использоваться более чем одной посылающей и одной принимающей задачей? |