Многопоточные приложения

   
На этом шаге мы приведем общие сведения о потоках.

   
Процесс (process) - это экземпляр исполняемой программы. Последовательность исполнения
кода внутри процесса называется потоком (thread). Поток - это наименьшая часть кода,
которая может быть помещена в очередь на выполнение. Поток запускается в адресном пространстве процесса и
использует ресурсы, выделенные процессу. В любом процессе есть как минимум один поток - первичный
(primary thread). Создание вторичных потоков (secondary threads) позволяет
реализовать преимущества многозадачной среды ОС Windows.

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

   
Ниже перечислены ситуации, когда применение нескольких потоков повышает эффективность приложения.

  • Плановые задания (контролируемые таймером). Поток, запускающий программу резервного
    копирования из приведенного выше примера с текстовым редактором, способен, к примеру, делать это
    каждые пять минут. В Win32-приложении время очередного сеанса исполнения потока может быть
    установлено с точностью до миллисекунды.
  • Отклики на события. Потоки могут запускаться по сигналам от других потоков. Например, в
    программе, наблюдающей за состоянием системы, поток, который ведет журнал ошибок, находится в неактивном
    состоянии, пока какой-либо из других потоков не сообщит ему о появлении ошибки.
  • Распределенные операции. Для сбора или распределения данных среди нескольких компьютеров
    каждому запросу выделяется свой поток, выполняемый параллельно с другими потоками, но в своем временном цикле.
  • Установка приоритета. Потокам в Win32 назначаются приоритеты, в зависимости от
    которых планировщик потоков регулирует выделение времени каждому потоку. Чтобы программа быстро реагировала
    на действия пользователя, целесообразно разбить ее на два потока: с высоким приоритетом - для пользовательского
    интерфейса, с низким - для фоновой работы.

   
На следующем шаге мы рассмотрим создание потоков.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий