Главная » Просмотр файлов » Г. Шилдт - С#4.0 Полное руководство

Г. Шилдт - С#4.0 Полное руководство (1160795), страница 177

Файл №1160795 Г. Шилдт - С#4.0 Полное руководство (Г. Шилдт - С#4.0 Полное руководство) 177 страницаГ. Шилдт - С#4.0 Полное руководство (1160795) страница 1772019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Следует также иметь в виду дополнительные издержки, связанные с переключением контекста. Так, если создать слишком много потоков, то на смену контекста уйдет больше времени ЦП, чем на выполнение самой программы! И наконец, для написания нового кода, предназначенного для многопоточной обработки, рекомендуется пользоваться библиотекой распараллеливания задач (ТРЕ), о которой речь пойдет в следующей главе.

Запуск отдельной задачи Многозадачность на основе потоков чаще всего организуется при программировании на С(). Но там, где это уместно, можно организовать и многозадачность на основе процессов. В этом случае вместо запуска другого потока в одной и той же программе Глава 23. Многопоточное программирование. Часть первая: основы 883 одна программа начинает выполнение другой. При программировании на СФ это делается с помощью класса Ргосезз, определенного в пространстве имен еузпегп. ()1аопоаьгсз. В заключение этой главы вкратце будут рассмотрены особенности запуска и управления другим процессом.

Простейший способ запустить другой процесс — воспользоваться методом Ясагс (), определенным в классе Ргосеаа. Ниже приведена одна из самых простых форм этого метода: риЫгс звасьс Ргосе*з ЯСагг (звгьлд ими файла) где имя файла обозначает конкретное имя файла, который должен исполняться или же связан с исполняемым файлом. Когда созданный процесс завершается, следует вызвать метод С1озе (), чтобы освободить память, выделенную для этого процесса.

Ниже приведена форма объявления метода С1озе () . рнЫ1с ноьб С1озе () Процесс может быть прерван двумя способами. Если процесс является приложением Х)пс)отнв с графическим пользовательским интерфейсом, то для прерывания такого процесса вызывается метод С1озема1пн1пс)ои (), форма которого приведена ниже. риЫ1с Ьоо1 С1овеиа1пи1пс)ои() Этот метод посылает процессу сообщение, предписывающее ему остановиться. Он возвращает логическое значение Ьггге, если сообщение получено, и логическое значение га1зе, если приложение не имеет графического пользовательского интерфейса или главного окна.

Следует, однако, иметь в виду, что метод С1оаемафпифпоои () служит только для запроса остановки процесса. Если приложение проигнорирует такой запрос, то оно не будет прервано как процесс. Для безусловного прерывания процесса следует вызвать метод К111 (), как показано ниже.

риЫ1с ноЫ Кг11() Но методом К111 () следует пользоваться аккуратно, так как он приводит к неконтролируемому прерыванию процесса. Любые несохраненные данные, связанные с прерываемым процессом, будут, скорее всего, потеряны. Для того чтобы организовать ожидание завершения процесса, можно воспользоваться методом напг Ро техас () . Ниже приведены две его формы. рагс ноыа НаьггогЕхьг () рнЫьс Ьоо1 Ха1Г ЕогЕхьг (ьпс мютлисекуил) В первой форме ожидание продолжается до тех пор, пока процесс не завершится, а во второй форме — только в течение указанного количества миллисекунд. В последнем случае метод хафсрогех1ь () возвращает логическое значение сггге, если процесс завершился, и логическое значение га1ве, если он все еще выполняется. В приведенном ниже примере программы демонстрируется создание, ожидание и закрытие процесса.

В этой программе сначала запускается стандартная сервисная программа н)()пдотнв: текстовый редактор Хогг)Раг).ехе, а затем организуется ожидание завершения программы гногг)раг) как процесса. 884 Часть ((. Библиотека С() Продемонстрировать запуск нового процесса. пятна зуясещ) цятпд зуяяещ. Оьадпояяься; с1аяя зсагсвгосеяя ( ягасьс то1г( мавп() ( Ргосеяя пенРгос — Ргосеяя.згагг("ногбрас).ехе")г Сопяо1е.нглге51пе("Новый процесс запущен."); пенргос.иа1ГРогвхгг(); пенргос.С1ояе(); // освободить выделенные ресурсы Сопяо1е.нггге11пе("Новый процесс завершен."); ) ) При выполнении этой программы запускается стандартное приложение (Л)огс(Рас(, и на экране появляется сообщение "новый процесс запущен. ".

Затем программа ожидает закрытия Хогг(Рая(. По окончании работы Хогг(раг( на экране появляется заключительное сообщение "новый процесс завершен. ". 886 Часть 11. Библиотека С№ позволял бы с выгодой использовать несколько процессов для повышения производительности программного обеспечения. Но дело в том, что в прошлом это было не так-то просто сделать ясным и допускающим масштабирование способом. Изменить это положение, собственно, и призваны ТРЕ и РЕ11ч10.

Ведь они дают возможность легче (и безопаснее) использовать системные ресурсы. Библиотека ТРЕ определена в пространстве имен зуегегл. тнгеагт№пд. таекз. Но для работы с ней обычно требуется также включать в программу класс 3 уз Селт. тпгеасГ№пгт, поскольку он поддерживает синхронизацию и другие средства многопоточной обработки, в том числе и те, что входят в класс тпсег1осхесг. В этой главе рассматривается и ТР1., и РЕПЩ. Следует, однако, иметь в виду, что и та и другая тема довольно обширны. Поэтому в этой главе даются самые основы и рассматриваются некоторые простейшие способы применения ТР1 и РЕ1ЫЯ. Таким образом, материал этой главы послужит вам в качестве удобной отправной точки для дальнейшего изучения ТР1 и Р11ХЯ. Если параллельное программирование входит в сферу ваших интересов, то именно эти средства .НЕТ Ргашетчогк вам придется изучить более основательно.

ПРИМЕЧАНИЕ Несмотря на то что применение ТРЕ н РАНЯ рекомендуется теперь для разработки большинства многопоточных приложений, организация многопоточной обработки на основе класса тгтгеап, представленного в главе 23, по-прежнему находит широкое распространение. Кроме того, многое нз того, что пояснялось в главе 23, применимо н к ТРС Поэтому усвоение материала главы 23 все еще необходимо для полного овладения особенностями организации многопоточной обработки на С№. Два подхода к парамельному программированию Применяя ТР1„параллелизм в программу можно ввести двумя основными способами.

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

Второй способ ввода параллелизм называется параллелизмом задач. При таком подходе две операции или больше выполняются параллельно. Следовательно, параллелизм задач представляет собой разновидность параллелизма, который достигался в прошлом средствами класса тпгеагт. А к преимуществам, которые сулит применение ТР1., относится простота применения и возможность автоматически масштабировать исполнение кода на несколько процессоров. Глава 24. Многопоточное программирование. Часть вторая: библиотека ГР1 887 Класс ТазХ В основу ТР) положен класс Тая)г.

Элементарная единица исполнения инкапсулируется в ТР). средствами класса Тая)г, а не Т)гге а с(. Класс Тая )г отличается от класса Т)ггеас( тем, что он является абстракцией, представляющей асинхронную операцию. А в классе Тпгеас( инкапсулируется поток исполнения. Разумеется, на системном уровне поток по-прежнему остается элементарной единицей исполнения, которую можно планировать средствами операционной системы.

Но соответствие экземпляра объекта класса Тая)г и потока исполнения не обязательно оказывается взаимно-однозначным. Кроме того, исполнением задач управляет планировщик задач, который работает с пулом потоков. Это, например, означает, что несколько задач могут разделять один и тот же поток. Класс Тая)г (и вся остальная библиотека ТР1) определены в пространстве имен Буягет. Т)ггеаг(1пд.

Тая)гя. Созданиезадачи Создать новую задачу в виде объекта класса Тая )г и начать ее исполнение можно самыми разными способами. Для начала создадим объект типа Тая)г с помощью конструктора и запустим его, вызвав метод Яга гс ( ) . Для этой цели в классе Тая )г определено несколько конструкторов. Ниже приведен тот конструктор, которым мы собираемся воспользоваться: рпЫгс Тая)г(ьсс1пп действие) где действие обозначает точку входа в код, представляющий задачу, тогда как Асгзоп — делегат, определенный в пространстве имен Буягель Форма делегата Асгбоп, которой мы собираемся воспользоваться, выглядит следующим образом.

рагс г(е1еоаге те1г( Асягоп() Таким образом, точкой входа должен служить метод, не принимающий никаких параметров и не возвращающий никаких значений. (Как будет показано далее, делегату Асгбоп можно также передать аргумент.) Как только задача будет создана, ее можно запустить на исполнение, вызвав метод Бс агг ( ) . Ниже приведена одна из его форм. рпЫгс ноъя Ясагс () После вызова метода Бгагг () планировщик задач запланирует исполнение задачи.

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

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

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

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