Главная » Просмотр файлов » Р.У. Себеста - Основные копцепции языков программирования (2001)

Р.У. Себеста - Основные копцепции языков программирования (2001) (1160794), страница 138

Файл №1160794 Р.У. Себеста - Основные копцепции языков программирования (2001) (Р.У. Себеста - Основные копцепции языков программирования (2001)) 138 страницаР.У. Себеста - Основные копцепции языков программирования (2001) (1160794) страница 1382019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 138)

Асинхронные сообщения Другое значительное усовершенствование языка Ада 95 по сравнению со средствами языка Ада 83 для поддержки параллельности состоит в способности задач передавать сообщения другим задачам. Рандеву в языке Ада 83 являются строго синхронными — и отправитель, и получатель должны быть готовы к связи перед тем, как они действительно свяжутся через рандеву. Задача в языке Ада 95 может содержать специальный оператор ае?вос, называемый асинхронным оператором ее?еос, который немедленно реагирует на сообщения, поступающие от других задач. Такой оператор может иметь одну из двух альтернатив за- 12.Ь.

Параллельность в языке Ада 95 пуска: вызов входа или оператор с(в1ау. Кроме запускаемой части, асинхронный оператор ве1вое имеет прекращаемую часть, которая может содержать любую последовательность операторов языка Ас)а. Семантика асинхронного оператора вв1еое состоит в том, что он выполняет только одну из двух своих частей. Если происходит событие запуска (либо получение вызова опеку, либо прекращение работы таймера сзв1ау), он выполняет запускаемую часть. В противном случае он выполняет прекращаемую часть. Приведенные ниже два примера асинхронных операторов вв1вое взяты из руководства пользователя языка Ас(а 95 (ААХМ, 1995).

В первом фрагменте кода прекрашаемый оператор выполняется повторно (вследствие наличия цикла), пока не будет получен вызов тегтупа1. Хаут Гог 1пгеггцрг. Во втором фрагменте кода функция, вызываемая в прекрашаемом операторе, выполняется как минимум пять секунд. Если за это время код не закончится, происходит выход из оператора ве1есе. -- Основной цикл команд для интерпретатора команд— 1оор ве1есс Тегжупа1.)(аут Гог 1псеггцрсз РОТ Вяпе("Выполнение прервано"); с)звп аЬогс Выполнение этой части будет отложено до терминального -- прерывания Рцс 1.1пе("-> "); бес (.Тпе(Соввапс(, Вазс); Ргосеэв Сопяаапс((Сокявапс( (1..1.авс))г епсз ве1восз впс1 1оор; -- Вычисления, ограниченные во времени ве1еос с(в1ау 5.0; Рцс Вьпе("Вычисления не сходятся"]З тЬвп аЬогс -- Эти вычисления должны закончиться эа 5 секунд; если нет — предполагается, что они расходятся.

Ногг1Ь1е Сожр11сасес( Несцгвяче Гцпссуоп(Х, г')з епс1 вв1вос; 12.7. Потоки языка Зама Параллельные модули в языке )ача — это объекты, содержащие метод гцп, код которого выполняется параллельно с другими методами и методом аадп. Есть два способа определить класс, объекты которого могут иметь параллельные методы.

Один иэ них— определить подкласс встроенного класса Т)згеас(, обеспечивающего поддержку метода гцп. Часто, но не всегда, этот способ является вполне приемлемым. Напомним (см. главу 11), что язык )ача не поддерживает множественное наследование. Однако класс может быть производным от другого класса и реализовывать интерфейс, являющийся разновидностью абстрактного класса.

Следовательно, класс может быть производным от своего естественного предка и реализовывать интерфейс ВцппаЬ1е, обеспечивающий частичную поддержку параллельности. 532 Глава 12. Параллельность 12.7.1. Класс тЬсеай Главными сущностямн класса тпгеас1 являются два метода — гоп и зга гг.

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

Несмотря на это, класс Т1тгеас( — единственный класс, доступный программисту для создания параллельных программ на языке )ача. Трудно точно описать, как именно работает планировщик языка )ача, поскольку различные реализации (Бо1апз, %)пбоюз 95 и др,) в настоящее время по-разному планируют потоки. Обычно, однако, планировщик предоставляет одинаковые отрезки времени каждому запускаемому потоку по круговой системе, пока эти потоки имеют одинаковый приоритет. Класс Т)тгеас) имеет несколько методов для управления обьектами класса Тпгеаб.

Метод уйе1с1, не имеющий параметров, предназначен для принудительного освобождения оставшейса части отрезка времени, выделенного выполняемому потоку. Поток немедленно помещается в очередь задач, готовых к выполнению, становясь запускаемым. Затем планировщик выбирает из очереди задач, готовых к выполнению, поток. имеющий наивысший приоритет. Если нет других готовых к выполнению потоков, имеющих приоритет выше, чем у потока, только что освободившего процессор, этот поток может стать следующим в очереди на получение интервала времени.

Метод у1е1а является статическим, так что его следует вызывать, указывая в качестве префикса имя класса, а не объекта. Метод в1еер имеет один параметр — целое число миллисекунд, на которое должен быть заблокирован указанный поток. После того как истечет указанное количество миллисекунд, поток будет помещен в очередь задач, готовых к выполнению.

Поскольку невозможно узнать, как долго поток будет пребывать в очереди задач, готовых к выполнению, прежде чем начнет свое выполнение, то параметр метода в1еер — это минимальное количество времени, в течение которого поток не будет выполняться. Метод в1еер возбуждает исключительную снтуацюо 1пгеггирсес1ехсерг1оп, которая должна обрабатываться методом, вызвавшим метод в1еер. Исключительные ситуации полробно описаны в главе 13.

Метод вцврепа используется, когда выполнение потока должно быть временно приостановлено, а затем через некоторое время он может быть запущен вновь. Варианты этой разновилностн операторов в настоящее время являются общепринятыми в широко распространенных системах. Например, когда пользователь операционной системы 12.7. Потоки языка зача 333 )ч'(пг(озчз 95 указывает, что файл должен быть сохранен, а в каталоге уже есть файл с таким именем, операционная система просит пользователя подтвердить, что файл должен быть записан заново, перед тем как эта операция будет действительно выполнена.

В контексте потоков рассмотрим, каким образом пользователь просит систему остановить выполнение некоторого потока. Метод, выполняемый по требованию пользователя (например, щелчок на кнопке в окне), может сначала приостановить поток, выполнение которого пользователь хочет прервать, а затем либо остановить его, либо возобновить. Эти операции иллюстрируются следующим фрагментом программы: ТЬгеаг( Ьа11дагаег раЬ11о чойс( вторВиттоп() ( Ьа11дагае.вцврепс(()г йт' (ав)гОвег( "Вы действительно хотите прекратить игру? (у/и))" Ьа119аие.втор()г е1яе Ьа119агае.гевиаге()г Метод ав)гОвег отображает на экране сообщение, являющееся его параметром, а затем считывает с клавиатуры ответ пользователя.

Если ответом является нажатие клавиши у или у, метод возвращает значение Ские; в противном случае он возвращает значение ка1ве. Метод втор прекращает выполнение потока, переводя его в состояние завершения. Метод гевцгпе переводит поток из заблокированного состояния в очередь задач, готовых к выполнению. 12.7.2. Приоритеты Приоритеты потоков не обязаны быть одинаковыми.

По умолчанию поток имеет тот же приоритет, что и создавший его поток. Есгги поток создан методом пайп, его приоритет по умолчанию равен константе МОР(Ч РВ10В1ТУ, которая по умолчанию равна 5. Поток определяет две другие констангък задающие приоритеты, МАХ РВ10В1ТУ и М1М Р)Г1ОВ1ТУ, значения которых равны 1О и 1, соответственно. Приоритет потока можно изменить с помощью метода яес Рг1огзту. Новый приоритет может быть равен любой из заранее определенных констант или любому целому числу между значениями М1М РВ10В1ТУ и мАх РВ10В1ту.

Метод 9есРгзог1су возвращает текущий приоритет потока Если существуют потоки с различными приоритетами, работа планировщика управляется этими приоритетами. Когда выполнение текущего потока заблокировано или прекращено, либо отрезок времени, предоставленный в его распоряжение, истек, планировщик выбирает в очереди задач, готовых к выполнению, поток, имеющий наивысший приоритет. Поток с наименьшим приоритетом будет запущен, только если при этом в очереди задач, готовых к выполнению, нет потока с более высоким приоритетом. 12.У.З.

Синхронизация взаимодействия В языке )ача синхронизация взаимодействия достигается тем, что методы, имеющие доступ к совместно используемым данным, полностью выполняются до того, как другой метод начнет работать с тем же самым объектом. Иными словами, мы можем указать, Глава 12. Параллельность что если некоторый метод начал свое выполнение, то оно завершится до того. как любой другой метод начнет свою работу с тем же самым объектом. Такие методы блокируют этот объект, что прелотврашает доступ к нему других синхронизированных л1етолов.

Такое указание осуществляется путем добавления модификатора вупсЬкоп1кес( к опрелелению метала. как показано в следующем скелетном определении класса: с1ввв МапаоеВп1 ( рк1чаке 1пг ,'100] Ьц риЬ11с вупсзкоп1весл чо1с с(ероя1с (1пс 1 еп) ( рсЬ1з.с вупсЬкоп1вей 1пк 1егоЬ() ( Два метода, определенных в методе МападеВпй.

имеют модификатор вупсЬкспдвес(, что предотвращает их взаимное влияние во время работы с одним и тем же объектом, даже если они вызываются разными потоками. В некоторых случаях количество операторов, манипулирующих совместно распределенной структурой данных. значительно меньше, чем общее количество операторов метола, в котором она расположена. В этих случаях лучше синхронизировать сегменты кола, имеющие доступ или изменяющие совместно используемую структуру ланных. а не весь метод. Это можно сделать с помощью так называемого синхронизированного оператора, имеющего следующий общий вид: вупспксп1квс (выражение) оператор Здесь выражение должно вычислить обьект, а оператор может быть как простым.

Характеристики

Тип файла
DJVU-файл
Размер
9,5 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6384
Авторов
на СтудИзбе
308
Средний доход
с одного платного файла
Обучение Подробнее