http://cbuilder.ru
Создание многопоточных приложений
Сначала поговорим о разработке многопоточных приложений,
а потом — об особенностях разработки многопоточных приложений в C++Builder
Введение.
Программа, выполняющая несколько действий одновременно, создает
объекты,
которые называются
потоками или
нитями (
threads).
Когда
приложение выполняется, оно загружено в память, готовую к выполнению.
В этой точке оно становится
процессом, содержащим один или более
потоков,
которые содержат данные, код и другие системные ресурсы для программы.
Поток выполняет одну часть приложения и ему выделяется процессорное время операционной
системой.
Все потоки процесса совместно используют то же самое адресное пространство и
могут обратиться к глобальным переменным процесса, т.е. все потоки одного процесса
имеют совместный доступ к его ресурсам. Каждый процесс представляет собой один
начальный поток, который называется первичным потоком
Первичный поток может создавать вторичные потоки. Операционная система отслеживает
список всех потоков и циклически переключается между ними, выделяя каждому потоку
часть времени центрального процессора. По завершении времени, выделенного определенному
потоку, система запоминает текущее состояние регистров ЦП и ссылку на команду,
которая должна была выполниться следующей в данном потоке. Затем система выбирает
другой поток, восстанавливает зафиксированное для него состояние регистров ЦП
и продолжает выполнение с той команды, на которой оно было приостановлено в
прошлый раз.
То есть, в случае организации различных потоков в нескольких точках, программа
будет выполняться в нескольких местах одновременно. Когда следует создавать
дополнительные потоки ?
- управление вводом от нескольких устройств.
- для различение среди задач изменения приоритета.
Например, высоко-приоритетный поток обрабатывает критические по времени задачи, и низко-приоритетный поток исполняет другие задачи.
- для приложений с многодокументным интерфейсом (MDI) потоки для дочерних окон
- если система, выполняющая вашу программу многопроцессорная, Вы можете улучшить работу, деля работу в несколько потоков и позволяя им выполняться одновременно на отдельных процессорах.
Учтите: не все операционные системы осуществляют истинную многопроцессорную
обработку, даже когда это поддерживается используемым оборудованием. Например,
Windows 9x только моделирует многопроцессорную
обработку, даже если используемое оборудование поддерживает это !
Также, при создании потоков следует учитывать, что слежение за слишком многими
потоками потребляет процессорное время;
рекомендованный
предел — 16 активных потоков на процесс на системах с одним процессором.