2.2.4 Поточность

Многопоточность - это способность ОС одновременно выполнять несколько потоков внутри одного процесса. Каждый процесс состоим как минимум из одного потока. Процесс и его потоки образуют задачу (Task). Процесс, запущенный "однопоточно", представлен адресами своего блока управления, пользовательского адресного пространства и стека. Во время работы процесс контролирует регистры процессора, по завершению процесса последние сохраняются.
В многопоточной среде с процессом также связан только один блок управления процессом и пользовательское адресное пространство, но на каждый поток приходится по отдельному стеку и блоку управления потоком, содержащие значения регистров, приоритеты и другую связанную с потоком информацию. Следовательно, все связанные с процессом потоки делят между собой ресурсы этого процесса; они находятся в том же адресном пространстве и имеют доступ к одним и тем же данным. Если один потом изменяет данные в памяти, то другие потоки получат уже изменённые данные, а если один поток откроет файл для чтения, то и другие потоки могут читать этот файл.
Преимущества от применения потоков:
- Поток создаётся гораздо быстрее чем процесс
- Завершение потока (Termination) быстрее, чем завершение процесса
- Переключение между потоками одного процесса быстрее, чем между разными процессами
- Коммуникация между потоками быстрее, поскольку они делят одну и ту же память и файлы и для поддержания связи им не требуется ядро.
При использовании потоков требуются механизмы их координации, чтобы обеспечить верную очерёдность их действий.