Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Использование потоков в приложениях Windows

Определение 1

Использование потоков в приложениях Windows — это одновременное исполнение ряда задач одним приложением.

Введение

Бывают ситуации, когда специалисту требуется одновременно исполнять несколько задач, используя одно приложение. Чтобы решить эту и другие подобные проблемы, можно использовать средства, которые дают возможность реализации многопоточности. Многопоточность может быть использована в следующих случаях:

  1. Чтобы обойти медленные процессы. При использовании лишь одного потока, приложение способно выполнить приостановку своего исполнения на тот период времени, пока им заканчивается один из медленных процессов, таких, например, как соединение с другим оборудованием через сеть. Компьютерный центральный процессор в это время входит в режим ожидания и фактически не исполняет никаких команд. При использовании многих потоков, программное приложение способно продолжить исполнение других потоков, во время ожидания одним из потоков окончания медленного процесса.
  2. Чтобы организовать поведение приложения. Благодаря применению потоков, имеется возможность организации исполнения компонентов приложения, как пожелает пользователь. К примеру, можно для всех задач приложения назначить приоритеты исполнения. То есть, задача, обладающая максимальным приоритетом, станет использовать больше процессорных ресурсов, что бывает важным при решении задач критического плана.
  3. Чтобы поддержать мультипроцессорную обработку. Когда в компьютере, на котором работает многопоточное приложение, установлено много процессоров, то имеется возможность существенно повысить скорость исполнения приложения, распределяя потоки между процессорами.

Использование потоков в приложениях Windows

Следует отметить, что не все версии Windows были способны в полной мере работать в полнопоточном режиме, даже при поддержке оборудованием такого режима. Например, Windows 95 была способна лишь имитировать режим многопоточности.

Потоком является объект операционной системы, который заключён в процесс и реализует определённую задачу. Все приложения Windows имеют как минимум один поток, именуемый основным. Любой процесс способен иметь несколько потоков.

Возможность задания многопоточности была обусловлена появлением вытесняющей многозадачности. Ранние 16-ти разрядные версии Windows применяли кооперативную многозадачность. Кооперативная многозадачность является поддержкой одновременной работы ряда приложений операционной системы, при которой операционная система получает управление от приложения. Такой тип многозадачности был достаточно малоэффективным. При зависании одного из приложений, повисала вся система.

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

«Использование потоков в приложениях Windows» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

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

Таким образом, поток является объектом, получающим заданное процессорное время. Все приложения Windows считаются процессами операционной системы. Все процессы имеют в своём составе по крайней мере один поток, именуемый главным. Windows не задаёт ограничений по количеству потоков для любого процесса.

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

Для использования объектов потоков в своём приложении, пользователь должен сформировать потомок класса TThread. Этот класс был спроектирован, чтобы облегчить формирование приложений, имеющих несколько потоков. Он обеспечивает совместимость при использовании библиотеки визуальных компонентов (VCL) Delphi.

При реализации приложений, имеющих много потоков, нужно выполнять следующие рекомендации:

  1. Избегать создания чрезмерно большого количества потоков, поскольку это ведёт к перегрузке операционной системы и процессора. Рекомендуется создавать для однопроцессорной системы не более шестнадцати активных потоков в одном процессе.
  2. Использовать синхронизацию в ситуации, когда сразу несколько потоков стремятся обеспечить себе доступ к одному и тому же ресурсу.
  3. Почти все методы, которые выполняют обращение к объектам VCL и меняют содержание формы, обязаны получать вызов из главного потока или применять объект синхронизации.

Если пользователю необходимо записать код инициализации для нового объекта потока, ему следует выполнить добавление нового конструктора в описание нового класса потока, а уже далее пользователь может прибавить код инициализации вместо кода реализации класса. Здесь же пользователь может задать требуемый приоритет для этого потока и необходимые действия по завершении его работы.

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

Приоритет всех потоков состоит из следующих компонентов:

  1. Класс приоритета, то есть приоритет процесса, который породил поток.
  2. Относительный приоритет, то есть приоритет самого потока.

Класс приоритета процесса может быть одним их четырёх значений, а именно, Idle, Normal, High и Realtime, отображаемых числами от четырёх до двадцати четырёх. Всем приложениям по умолчанию присваивается приоритет Normal.

Чтобы определить текущий и установить требуемый класс приоритета применяются соответственно функции Get Prioriry Class и Set Priority Class.

Воспользуйся нейросетью от Автор24
Не понимаешь, как писать работу?
Попробовать ИИ
Дата написания статьи: 10.12.2020
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot