Процессы
и потоки
В этой главе мы рассмотрим
проблему одновременного выполнения нескольких задач внутри одного приложения.
Вы научитесь использовать объекты потоков и координировать их работу.
Первое определение, которое
мы рассмотрим, — это многопоточность. Многопоточность используется для:
- обхода медленных процессов.
Когда используется только один поток, приложение может приостановить свое
выполнение на то время, пока им завершается какой-либо медленный процесс (доступ
к диску, связь с другим компьютером по сети и др.). Центральный процессор
компьютера в данный момент находится в режиме ожидания и практически не выполняет
никаких команд. С использованием многопоточности ваше приложение может продолжать
выполнение других потоков, пока один из потоков ожидает завершения медленного
процесса;
- организации поведения
приложения. Благодаря использованию потоков вы можете организовать выполнение
частей приложения так, как вам захочется. Например, вы можете для каждой задачи
приложения (если каждой задаче выделен свой поток) распределить приоритеты
выполнения. Таким образом, задача, имеющая наибольший приоритет, будет занимать
больше процессорного времени, что очень важно для решения критических задач;
- поддержки мультипроцессорной
обработки. Если в компьютере, на котором запущено многопоточное приложение,
имеется несколько процессоров, то Можно значительно увеличить скорость выполнения
вашего приложения, направляя на каждый процессор свой поток.
Примечание
Linux — это многопоточная
операционная система с поддержкой архитектуры Intel MP. Процессы в Linux
представляют собой отдельные задачи. Каждый процесс запускается в собственном
виртуальном адресном пространстве и не способен взаимодействовать с другими
процессами Исключение составляют лишь процессы, обеспечивающие механизмы
защиты Linux, и процессы ядра операционной системы.