Обзор многопоточности в .NET — КиберПедия 

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Обзор многопоточности в .NET

2017-11-27 149
Обзор многопоточности в .NET 0.00 из 5.00 0 оценок
Заказать работу

Цель работы: научиться проводить анализ преимуществ, недостатков, проблем многопоточностив.NET

Оборудование: Персональный компьютер с ОС Linux

Индивидуальное задание. Провести анализ многопоточности, выявить особенности, достоинства и недостатки многопоточности в.NET.

Теоретические сведения

NET Framework — программная платформа, выпущенная компанией Microsoft в 2002 году. Основой платформы является общеязыковая среда исполнения CommonLanguageRuntime (CLR), которая подходит для разных языков программирования.

Считается, что платформа.NET Framework явилась ответом компании Microsoft на набравшую к тому времени большую популярность платформу Java компании SunMicrosystems (ныне принадлежит Oracle).

Почти все возможности.NET Framework доступны через обширное множество управляемых типов. Эти типы организованы в иерархические пространства имен и упакованы в набор сборок, которые вместе со средой CLR составляют платформу.NET.

NET Framework состоит из прикладных API-интерфейсов, большинствоиз которых покрывают три области функциональности:

• технологии пользовательских интерфейсов;

• технологии серверной части;

• технологии распределенных систем.

Функциональные возможности.NET Framework:

• Обширная поддержка асинхронности через методы возврата из задач.

• Поддержка протокола сжатия ZIP.

• Улучшенная поддержка HTTP через новый класс HttpClient.

• Улучшение показателей производительности для сборки мусора и извлеченияресурсов сборки.

• Поддержка взаимодействия WinRT и API-интерфейсов для построения планшетных приложений в стиле Metro.

Платформа.NET Framework предоставляет потоковую модель для низкоуровневого ввода-вывода. Обычно для чтения и записи непосредственно в файлы и сетевыеподключения используются потоки данных, которые могут быть соединены или помещены внутрь декорированных потоков для добавления функциональности сжатияили шифрования.

Асинхронные функции C# 5 значительно упрощают параллельное программирование, поскольку они уменьшают потребность в работе с низкоуровневыми технологиями. Тем не менее, все еще возникают ситуации, при которых нужны сигнальныеконструкции, локальное хранилище потока, блокировки чтения/записи и т.п.

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

В среде.NET Framework определены две разновидности потоков: приоритетный и фоновый. По умолчанию создаваемый поток автоматически становится приоритетным, но его можно сделать фоновым. Единственное отличие приоритетных потоков от фоновых заключается в том, что фоновый поток автоматически завершается, если в его процессе остановлены все приоритетные потоки.

В связи с организацией многозадачности на основе потоков возникает потребность в особого рода режиме, который называется синхронизацией и позволяет координировать выполнение потоков вполне определенным образом. Для такой синхронизации в C# предусмотрена отдельная подсистема.

Все процессы состоят хотя бы из одного потока, который обычно называют основным, поскольку именно с него начинается выполнение программы. Из основного потока можно создать другие потоки.

В языке C# и среде.NET Framework поддерживаются обе разновидности многозадачности: на основе процессов и на основе потоков. Поэтому средствами C# можно создавать как процессы, так и потоки, а также управлять и теми и другими. Для того чтобы начать новый процесс, от программирующего требуется совсем немного усилий, поскольку каждый предыдущий процесс совершенно обособлен от последующего.

Намного более важной оказывается поддержка в C# многопоточной обработки, благодаря которой упрощается написание высокопроизводительных, многопоточных программ на C# по сравнению с некоторыми другими языками программирования.

Для создания потока необходимо указать метод, используемый для выполнения потока.

• Основные операции

o Запуск

o Ожидание завершения

o Запрос досрочного завершения

Пулы потоков:

• Запросы сервера удобно обрабатывать в отдельных потоках

• Большое количество запросов – большое количество потоков – медленная работа

• Необходимо ограничить количество потоков – так появился пул потоков

Таймеры:

• Выполнение периодически повторяющихся операций

• Выполнение операций по истечении указанного интервала времени

• Для выполнения операции таймера используется отдельный поток

• Виды таймеров

o System.Threading.Timer – обычный

o System.Windows.Forms.Timer – «оконный», без создания дополнительного потока

o System.Timers.Timer – устаревший класс

Обработка исключений:

• Исключение может произойти в любом потоке

• Исключение будет выбрасываться повторно

Контекст выполнения потока. Контекст включает:

o Параметры безопасности

o Параметры локализации

o Параметры транзакций

Контекст занимает много места и копируется в создаваемые потоки

• У процессора есть кэш, ускоряющий работу с памятью

o Данные читаются в кэш из памяти

o Данные модифицируются в кэше

• При совместном использовании памяти несколькими ядрами каждое ядро имеет свой кэш

Недостатки традиционной реализации многопоточности

• Традиционные средства императивных языков программирования рассчитаны на однопоточное выполнение инструкций

• Расширение возможностей языков программирования по поддержке многопоточности обеспечивается за счёт применения готовых библиотек и API операционных систем

o Предоставляются низкоуровневые примитивы, ориентированные на реализацию потоков и их синхронизацию, но не распараллеливание обычных алгоритмов

o Реализация и отладка даже несложных алгоритмов в многопоточных программах становится трудной задачей

o Требуется значительное время на обеспечение приемлемого качества кода

o Необходимо самостоятельно управлять количеством потоков с учётом аппаратных возможностей

o Разработанный код трудно обслуживать и использовать повторно.

Преимущества использования пула потоков

• Возможность одновременно обрабатывать ограниченное количество запросов клиентов с постановкой в очередь ожидающих запросов

• Эффективно при наличии значительного числа операций ввода-вывода и ожидания внешних сервисов

• Повышение эффективности использования аппаратных ресурсов системы

• Возможность быстро запускать обработку поступившего запроса при наличии одного или нескольких свободных потоков в пуле.

Ход работы:

1. Ознакомиться с теоретическими сведениями.

2. Провести анализ многопоточности, выявить особенности, достоинства и недостатки. Результаты оформить в таблице.

Содержание отчета

Отчет по практической работе должен содержать следующие пункты:

- название практической работы;

- цель работы;

- краткие теоретические сведения;

- индивидуальное задание для выполнения практической работы;

- краткое описание хода выполнения работы;

- результаты выполнения работы;

- выводы.


 

Практическая работа №14


Поделиться с друзьями:

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.013 с.