Влияние многопоточности на структуру программы |
Многопоточность изменяет базовую архитектуру программы. В отличие от однопоточной программы, которая выполняется строго последовательно, в многопоточном приложении одновременно функционируют его отдельные фрагменты или порции. Таким образом, многопоточные программы содержат элемент параллельности, и их основная задача — управление взаимодействием потоков. Как объяснялось ранее, у всех процессов есть хотя бы один поток, который называется основным (main thread). Основной поток создается в момент запуска программы. В многопоточном приложении основной поток порождает один или несколько дочерних потоков (child thread). Таким образом, многопоточный процесс запускается с одним потоком исполнения, а затем создает дополнительные потоки. В тщательно спроектированной программе каждый поток представляет одиночный логический блок процесса. Принципиальное преимущество многопоточности состоит в том, что она позволяет вам писать очень эффективные программы благодаря использованию свободного времени или времени простоя, существующего в большинстве программ. Большая часть устройств ввода/вывода, таких как сетевые порты, диски или клавиатура, гораздо медленнее процессора. Часто программа тратит подавляющую часть времени выполнения на отправку или получение данных. Разумное применение многопоточности позволит вашему приложению выполнять в это время другую задачу. Например, пока одна часть программы посылает файл через Интернет, другая может читать ввод с клавиатуры, а третья — записывать в буфер следующий блок данных посылаемого файла.
|