Многопоточность в программировании |
Многопоточность занимает все более важное место в современном программировании. Во-первых, она позволяет создавать очень эффективные программы за счет наилучшего использования циклов процессора. Во-вторых, многопоточность — это естественный выбор при обработке кода, управляемого событиями, ставшего обычным в современных сильно распределенных, сетевых, основанных на интерфейсе GUI (Graphic User Interface, Графический интерфейс пользователя) программных средствах. Конечно, поддержка многопоточности в наиболее широко распространенной операционной системе Windows — тоже аргумент в пользу этой технологии. Кроме того, растущая популярность многопоточности изменяет представления программистов об архитектуре программы. Хотя в языке С++ нет встроенной поддержки многопоточных приложений, он вполне подходит для решения этой задачи. Все возрастающая важность проблемы заставляет посвятить эту главу применению языка С++ для разработки двух многопоточных программ. Первая из них — панель управления (control panel), которую вы можете использовать Для контроля потоков в выполняющейся программе. Эта задача интересна как демонстрационный пример применения многопоточности и как практическое средство, которое можно использовать при разработке многопоточных приложений. Вторая программа, описанная в этой главе, показывает, как применять многопоточность в реальных задачах, она представляет собой модифицированную версию сборщика мусора из главы 2, выполняющегося в фоновом потоке (background thread). В этой главе также показано, насколько хорош язык С++ при непосредственном взаимодействии с операционной системой. В других языках, таких как Java, существует промежуточный слой обработки между вашей программой и операционной системой. Этот слой вносит потери, которые недопустимы для Некоторых программ, например, функционирующих в среде реального време-Ни- В противоположность таким языкам, С++ обеспечивает прямой доступ * Низкоуровневым функциональным средствам операционной системы и, следовательно, может создавать более производительный код.
|