Главная » Просмотр файлов » Нэш Трей - C# 2010. Ускоренный курс для профессионалов (2010)

Нэш Трей - C# 2010. Ускоренный курс для профессионалов (2010) (1160865), страница 96

Файл №1160865 Нэш Трей - C# 2010. Ускоренный курс для профессионалов (2010) (Нэш Трей - C# 2010. Ускоренный курс для профессионалов (2010)) 96 страницаНэш Трей - C# 2010. Ускоренный курс для профессионалов (2010) (1160865) страница 962019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Если поток вызвал "родную" функцию через уровень Р/1пто(се, и эта функция требует длительного времени на выполнение, то прерывание потока откладывается до тех пор, пока управление не вернется в управляемое пространство. На заметку! В .МЕТ 2.0 и последующих версиях при выполнении блока 11па11у доставка тьгеас(Аьогсехсерс1оп откладывается до тех пор, пока выполнение не покинет блок 11па11у. В .МЕТ ).х исключение прерывания доставляется в любом случае. Вызов АЬогг на потоке не прерывает его принудительно, поэтому если нужно ждать до тех пор, пока поток действительно не завершит выполнение, понадобится вызвать ,того на этом потоке, чтобы подождать до тех пор, пока не завершится код обработчика исключения ТпгеасйЬогСЕхсергаоп. Во время этого ожидания имеет смысл установить таймаут, чтобы не ждать вечно, пока поток завершит уборку за собой.

Несмотря на то что код в обработчике исключений должен подчиняться другим правилам кодирования обработчиков, существует вероятность, что обработчику понадобится немало времени, а то и бесконечно много, чтобы завершить работу. Давайте посмотрим, как функционирует обработчик ТЬгеас1АЬогСЕхсерс1оп; пя1пд Яуясеш; пя1пд Яуягеш.Тпгеапгпдт рпЬ1гс с1аяя ЕпггуРогпс рггчяге згаггс то10 Тпгеаорппс() ( п1опд соппсег = От нб11е( Сгпе ) ( сгу сопяо1е.иг1се11пе( "(О)", соппсег+ь )т ) сассп( Тпгеас(АЬогскхсерг1оп ) ( /! Попытка проглотить исключение и продолжиться.

Сопяо1е.нг1ге11пе( "Прекратить(" )т ягаггс нога Ма1п() ( Тпгеас)пентпгеас( = пен Тнгеас)( пен Тпгеаозгагс(впсгуро1пг.тлгеас)гппс) ) пентьгеас(.ягагс()г ТЬгеас(.Я1еер( 2000 ); !/ Прервать поток. пентпгеас(.АЬогг()1 /! Ждать завершения потока. пентпгеас(.эо1п()т Зямб Глава ! 2 После беглого взгляда на код может показаться, что вызов боап на экземпляре пен1пзгапсе заблокирует выполнение навсегда. Однако этого не случается. Казалось бы, поскольку тпгеат!АЬоггехсергаоп обрабатывается внутри цикла функции потока, исключение будет проглочено" и цикл продолжится, независимо от того.

сколько раз главный поток попытается прервать данный поток. Однако исключение тпгеат!АЬоггехсергаоп, сгенерированное через метод тпгеас!. АЬогг, ведет себя особым образом. Когда поток завершает обработку исключения, исполняющая среда заново неявно генерирует его в конце обработчика. Это все равно, как если бы вы сами повторно сгенерировали исключение. Таким образом, любые внешние обработчики или блоки Тапа11у будут выполняться нормально. В примере вызов Уогп не будет ждать вечно, как можно было предполагать. Повторную генерацию системой исключения тпгеаоАЬо ггехсерг !.оп можно предотвратить, вызвав статический метод тьгевс!. Аезегльогг. Однако общая рекомендация предусматривает вызов Резегльогг только из потока, вызвавшего Аьогг.

Если нужно, чтобы зто происходило внутри обработчика исключения тьгеас!АЬоггехсерстоп прерываемого потока, понадобится применить сложную технику внутрипотокового взаимодействия. Если вы пришли к заключению о необходимости реализации такой техники отмены прерывания потока, то зто, скорее всего, свидетельствует о том. что вам, прежде всего, стоит пересмотреть дизайн своей системы. Другими словами, вто признак плохого дизайна! Хотя исполняющая среда обеспечивает намного более ясный механизм для прерывающихся потоков, такой как информирование заинтересованных сторон о факте прерывания потока, все равно обработчик тьгеас!Аьоггехсерг1оп должен быть реализован правильно.

На заметку! Тот факт, что экземпляры тпгеаг!АЪоггехсерг1оп могут генерироваться асинхронно в произвольном управляемом потоке, затрудняет создание устойчивого, безопасного к исключениям кода, Прочтите раздел "Ограниченные области выполнения" в главе 7. Останавливающиеся и пробуждающиеся потоки Как и для внутренних потоков операционной системы, существуют механизмы для погружения управляемых потоков в сон на определенный период времени или приостановки выполнения до тех пор, пока оно не будет явно возобновлено.

Если поток просто желает приостановить себя на предопределенный период времени, он может вызвать статический метод тьгеат!. Е1еер и перейти в состояние иаагБ1еердогп. Единственный параметр, передаваемый методу Я1еер — это количество миллисекунд, в течение которых поток должен находиться в спящем состоянии. После вызова этот метод заставляет поток отдать остаток кванта времени.

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

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

Многопоточность в С№ 367 Чтобы усыпить поток навсегда, предусмотрено специальное значение Т1гдеоцс. 1пг1паге, которое можно передать Б1еер. Разбудить спящий поток можно, прервав его методом экземпляра ТпгеасГ. 1псеггцрс. Этот метод подобен АЬогс в том, что он пробуждает целевой поток и генерирует исключение тьгеасг1пгеггцргесгехсерг1оп. Поэтому, если функция потока не оснащена обработчиком этого исключения, оно будет распространяться по стеку до тех пор, пока выполнение потока не прекратится из-за необработанного исключения. Если действительно необходимо реализовать изменяемое состояние сна, используя этот механизм, то для подстраховки потребуется поместить вызов Б1еер внутрь блока г ту и перехватывать исключение тьгеас11пгег гцргехсер гас п.

В отличие от ТЬгеастАЬогГЕхсерс1оп,исключение Тпгеас11псеггцрГЕхсерг1оп автоматически не повторяется исполняющей средой в конце обработчика. Однако обратите внимание, что реализовывать изменяемый механизм сна никогда не придется, потому что тип мопьгог, который описывается ниже, предлагает более эффективный путь достижения той же цели. на заметку! Еще одним специальным значением параметра для тьгеасг. Б1еер является О.

если передается О, то метод ТпгеасГ. Б1еер заставит поток отдать остаток выделенного ему кванта времени. Возобновление выполнения такого потока произойдет тогда, когда планировщик потоков вернется к нему снова. При работе на платформе .НЕТ 4.0 или последующей версии вместо этого следует использовать метод ТлгеасГ. Узе1Ф Другой способ отправить поток в состояние сна на неопределенное время предоставляет метод экземпляра тпгеаст. Япзрепсь Вызов Бцзрепс1 приостанавливает выполнение потока до тех пор, пока оно не будет явно возобновлено. Возобновить выполнение потока можно вызовом метода экземпляра Еезцгяе или 1псеггцрс. Однако в случае применения 1псеггцрг целевой поток должен иметь корректный обработчик исключений вокруг вызова Бцзрепс1, иначе поток моясет быть завершен.

Формально вызов АЬогс также возобновляет выполнение потока, но лишь затем, чтобы отправить ему тьгеасгльоггехсерсгоп н, в конечном счете, заставить завершиться. имейте в виду, что любой поток с достаточными привилегиями может вызвать Бпзрепсг на потоке— даже текущий поток на самом себе. Если текущий поток вызывает Б перепл, в этой точке он блокируется, ожидая следующего вызова Не зцлсе. Важно отметить, что когда на потоке вызывается Бпзрепс1 поток не приостанавливается немедленно. Вместо этого потоку разрешено выполняться до т.н. безопасной пючки.

Достигнув этой точки, поток приостанавливается. Безопасная точна — это место в управляемом коде. где можно провести сборку мусора. Например, если среда СЬК определяет, что пришло время для сборки мусора, она должна временно приостановить все потоки, пока это не будет сделано (т.е. собран мусор). Однако если поток находится на полпути в операции, которая состоит из нескольких инструкций, обращающихся н объекту в куче, а в это время сработает сборщик мусора и переместит этот объект в другое место системной памяти. ничего хорошего не произойдет. По этой причине, когда сборщик мусора приостанавливает потоки для сборки мусора, он должен подождать, попа все они не достигнут безопасной точки, когда можно будет перемещать объекты в памяти.

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

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

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

Нэш Трей - C# 2010
Accelerated_C_2010-4565
3_syntax_overview
3_generics_1.cs
as_1.cs
boxing.cs
conversions_1.cs
implicit_type_1.cs
is_1.cs
references_1.cs
references_2.cs
references_3.cs
values_1.cs
4_classes_structs
4_abstract_classes_1.cs
4_beforefieldinit_1.cs
4_box_1.cs
4_box_2.cs
4_box_3.cs
4_box_4.cs
4_box_5.cs
4_class_definition_1.cs
4_compareto_1.cs
4_containment_example_1.cs
4_containment_example_2.cs
4_containment_example_3.cs
4_ctor_struct_1.cs
4_ctor_struct_2.cs
4_ctor_struct_3.cs
4_destructor_1.cs
4_destructor_2.cs
Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7029
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее