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

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

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

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

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

888 Часть 11. Библиотека С() ясаг1с тога Мутая)с() ( Сопяо1е.нг1гевгпе("Мутаяк() запущен"); ГОГ (1ПС СООПС 07 СООПГ < 107 СОППГ++) ( Тлгеао.81еер(500)г Сопяо1е.кггтеЬгпе("В методе Мутант(), подсчет равен " + соопс)г ) Сопяо1е.нг1севьпе("МуТаяк завершен"); ) ясасгс тога Магп() ( Сопяо1е.игусекгпе("Основной поток запущен.") // сконструировать объект задачи.

Таях Гях = пен Таях(нуТаяк); // Запустить задачу на исполнение. Гя)с.ясагс()Г метод Маьп() активным до завершения метода Мутаяк М . гог(1пг 1 = Ог 1 < б07 ьт+) ( Сопяо1е.нггсе(".")Г Т)сгеас).81еер (100) г ) Сопзо1е.нг1севвпе("Основной поток завершен."); ) ) Основной поток запущен. .МуТая)с() запущен ,....В методе МуТаз)с(), .....В методе Мутаяк(), ....В методе МуТая)с(), .....В методе МУТая)с(), .....В методе МуТая)с(), .....В методе МуТая)с(), .....В методе МуТая)с(), .....В методе Мутаяк(), .....В методе МуТаз)с(), .....В методе МУТаз)с(), Мутаяк завершен .........Основной поток подсчет равен 0 подсчет равен 1 подсчет равен 2 подсчет равен 3 подсчет равен 4 подсчет равен 5 подсчет равен б подсчет равен 7 подсчет равен 8 подсчет равен 9 завершен.

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

Ниже приведен результат выполнения этой программы. (У вас он может несколько отличаться в зависимости от загрузки задач, операционной системы и прочих факторов.) Глава 24. Многопоточное программирование. Часть втораю библиотека ТР(. 889 В приведенном выше примере программы задача, предназначавшаяся для параллельного исполнения, обозначалась в виде статического метода.

Но такое требование к задаче не является обязательным. Например, в приведенной ниже программе, которая является переработанным вариантом предыдущей, метод МуТая)г (), выполняющий роль задачи, ийкапсулирован внутри класса. // Использовать метод экземпляра в качестве задачи. пятно Яуясев; пятну Яуягев.тьгеао1пд; оятпч Яуясев.т)тгеаг(тпч.таяляг с1аяя МуС1аяя ( // Метод выполняемый в качестве задачи. ро)511с чогб Мутая)г() ( Сопяо1е. Игтгеьтпе ("нута як () запушен" ); Гог(1пс соппс = 0; сопля < 10; сонно++) ( тьгеао.я1еер(500)г сопяо1е.игтгеь1пе("в методе мутаяк(), подсчет равен " + соплю; ) Сопяо1е.иггсеътпе("Мутая)г завершен "); с1аяя Оевотаяк ( ясасьс чогг( Магп() ( Сопяо1е.иг1Гет ьпе("Основной поток запушен.") О Сконструировать объект типа МуС1аяя.

МуС1аяя вс = пен МуС1аяя(); О сконструировать объект задачи длл метода вс.нутаяк() Тая)г Сяк = пеы Таях(вс.нуТаяк)) // Запустить задачу на исполнение. Сях.зсагс(); // Сохранить метод Магп() активным до завершения метода Мутая)г(). бог(1пс г = 0; г < 50/ Сопяо1е.игтсе(".")г Твгеао.Я1еер(100); ) Сопяо1е.нгтсеьтпе("Основной поток завершен."); Результат выполнения этой программы получается таким же, как и прежде. Единственное отличие состоит в том, что метод нута з)< ( ) вызывается теперь для экземпляра объекта класса МуС1ая я. 890 Часть Н. Библиотека С(г В отношении задач необходимо также иметь в виду следующее: после того, как задача завершена, она не моя<ет быть перезапущена.

Следовательно, иного способа повторного запуска задачи на исполнение, кроме создания ее снова, не существует. Применение идентификатора задачи В отличие от класса ТЛгеаб; в классе Таз)г отсутствует свойство Маше для хранения имени задачи. Но вместо этого в нем имеется свойство 1б для хранения идентификатора задачи, по которому можно распознавать задачи. Свойспю 1б доступно только для чтения и относится к типу вас. Оно объявляется следующим образом. роЬ11с 1пг 1б ( дег1 ) Каждая задача получает идентификатор, когда она создается. Значения идентификаторов уникальны, но не упорядочены. Поэтому один идентификатор задачи может появиться перед другим, хотя он может и не иметь меньшее значение. Идентификатор исполняемой в настоящий момент задачи можно выявить с помощью свойства Спг ген в 1б. Это свойство доступно только для чтения, относится к типу всасбс и объявляется следующим образом. РоЬ11с Ясасьс Хо11аЬ1е<ьпс> Сиггепс10 ( чес; ) Оно возвращает исполняемую в настоящий момент задачу или же пустое значение, если вызывающий код не является задачей.

В приведенном ниже примере программы создаются две задачи и показывается, какая из них исполняется, Продемонстрировать применение свойств гб и Соггепс1б. пя1пч Яувгеш; пв1пч Яуягеш. ТЬгеаб1пчо оя1пч Яуясеш.твгеабгпо.таякя1 с1аяя Пешотаяк ( // Метод, исполняемый как задача. ясасьо чоьб Мутавк() ( Сопяо1е.игьгеььпе("МуТавк() у" + Таях.сиггепг1б + " запущен" ); Гог(ьпс саопс = 0; соопг < 10; сочась+) ( твгеаб.я1еер(500); сопяо1е.хгьгеглпе ("в методе мутаяк() ()" + таях.сиггепг1б + подсчет равен " + сопля ); ) Сопво1е.Хг1сегдпе("МуТаяк М'" + Таяк.соггепс1б + " завершен"); ягасгс чоьб Ма1п() ( Сопво1е.иг1сеъьпе("Основной поток запущен."); О Сконструировать объекты двух задач.

Таяк Гяк = пеи Таяк(иутаяк); Тавк Гяй2 = пен Таяк(Мутавк)) Глава 24. Многопоточное программирование. Часть вторагв библиотека ТР~ 891 Запустить задачи на исполнение. сяХ.Бсатс(); Сяк2.51атт(); сопяо1е.нд1ьеьше("идентификатор задачи сягм " + сях.то); сопзо1е.хг1сеьтпе("идентификатор задачи сях2: " + тях2.10)г О Сохранить метод Магп() активным до завершения остальных запач. Гоп(1по 1 = 0; 1 < 60; 1++) ( Сопяо1е.итхоа(".")Г Тьтеао.51еер(100)) Сопяо1е.нт1оеЬтпе("Основной поток завершен."); ) ) Выполнение этой программы приводит к следующему результату.

Основнои поток запущен Идентификатор задачи Сях". 1 Идентификатор задачи сяк2: 2 .Мутаяк() У1 запущен МуТаяк() Я2 запущен .....В методе Мутаяк() К'1, подсчет равен В методе Мутаяк() У2, подсчет равен 0 .....В методе Мутаяк() 92, подсчет равен В методе Мутаяк() 91, подсчет равен 1 .....В методе Мутаяк() 91, подсчет равен В методе Мутаяк() К'2, подсчет равен 2 .....В методе Мутаяк() 92, подсчет равен В методе Мутаяк() К'1, подсчет равен 3 .....В методе Мутаяк() У1, подсчет равен В методе Мутаяк() У2, подсчет равен Л .....В методе Мутаяк() У1, подсчет равен В методе МуТаяк() 92, подсчет равен 5 .....В методе Мутаяк() Я2, подсчет равен В методе МуТаяк() К'1, подсчет равен б .....В методе Мутаяк() 92, подсчет равен В методе Мутаяк() У1, подсчет равен 7 .....В методе Мутаяк() К'1, подсчет равен В методе Мутаяк() 92, подсчет равен 8 .....В методе Мутая)с() 91, подсчет равен Мутаяк 91 завершен В методе МуТаяк() К'2, подсчет равен 9 Мутаяк 92 завершен .........Основной поток завершен.

Применение методов ожидания В приведенных выше примерах основной поток исполнения, а по существу, метод Мафп (), завершался потому, что такой результат гарантировали вызовы метода Т)тхеас). 51еер () . Но подобный подход нельзя считать удовлетворительным. 892 Часть (). Библиотека С() Организовать ожидание завершения задач можно и более совершенным способом, применяя методы ожидания, специально предоставляемые в классе Тая К. Самым простым из них считается метод Ха10 (), приостанавливающий исполнение вызывающего потока до тех пор, пока не завершится вызываемая задача. Ниже приведена простейшая форма об язвления этого метода.

риб11с чо10 Иаьг() При выполнении этого метода могут быть сгенерированы два исключения. Первым из них является исключение Оь0 есс()1зрозес)ехсерс1оп. Оно генерируется в том случае, если задача освобождена посредством вызова метода Пьярозе () . А второе исключение, йддгедабеЕхсербгоп, генерируется в том случае, если задача сама генерирует исключение или же отменяется. Как правило, отслеживается и обрабатывается именно это исключение. В связи с тем что задача может сгенерировать не одно исключение, если, например, у нее имеются порожденные задачи, все подобные исключения собираются в единое исключение типа йддгедабеЕхсер11оп, Для того чтобы выяснить, что же произошло на самом деле, достаточно проанализировать внутренние исключения, связанные с этим совокупным исключением.

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

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

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

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