Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VSRPP.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
181.63 Кб
Скачать

31. Состав и взаимодействие сборок

В платформе .NET сборка (assembly) – это единица развёртывания и контроля версий. Сборка состоит из одного или нескольких программных модулей и, возможно, данных ресурсов. Эти компоненты могут размещаться в отдельных файлах, либо содержаться в одном файле. В любом случае, сборка содержит в некотором из своих файлов манифест, описывающий состав сборки. Будем называть сборку однофайловой, если она состоит из одного файла. В противном случае сборку будем называть многофайловой. Тот файл, который содержит манифест сборки, будем называть главным файлом сборки.

Рис. 3. Однофайловая и многофайловая сборки.

Простые приложения обычно представлены однофайловыми сборками. При разработке сложных приложений переход к многофайловым сборкам даёт следующие преимущества:

  1. Ресурсы (текстовые строки, изображения и т. д.) можно хранить вне приложения, что позволяет при необходимости изменять ресурсы без перекомпиляции приложения.

  2. Если исполняемый код приложения разделён на несколько модулей, то модули загружаются в память только по мере надобности.

  3. Скомпилированный модуль может использоваться в нескольких сборках.

32 Многопоточное программирование. Класс Thread. Основные свойства класса.

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

Основной функционал для использования потоков в приложении сосредоточен в пространстве имен System.Threading. В нем определен класс, представляющий отдельный поток - класс Thread.

Класс Thread определяет ряд свойств, которые позволяют управлять потоком и получать информацию о нем. Основные свойства класса:

  • Статическое свойство CurrentContext позволяет получить контекст, в котором выполняется поток

  • Статическое свойство CurrentThread возвращает ссылку на выполняемый поток

  • Свойство IsAlive указывает, работает ли поток в текущий момент

  • Свойство IsBackground указывает, является ли поток фоновым

  • Свойство Name содержит имя потока

  • Свойство Priority хранит приоритет потока - значение перечисления ThreadPriority

  • Свойство ThreadState возвращает состояние потока - одно из значений перечисления ThreadState

33 Многопоточное программирование. Пул потоков

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

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

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

Преимущества:

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

  • Используя пул потоков, можно сосредоточиться на решении задачи, а не на инфраструктуре потоков приложения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]