Поделиться через


Многопотоковые программы

Поток — это ветвь выполнения в программе. Также это наименьшая единица выполнения, планируемая в Win32. Поток состоит из стека, состояния регистров ЦП и записи в списке выполнения системного планировщика. Каждый поток может использовать все ресурсы процесса.

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

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

См. также

Основные понятия

Реализация многопоточности на языке C с помощью функций Win32