Linux - статьи

Linux и потоки.


Linux, как клон Unix, на данный момент поддерживает многозадачность и многопотоковость, т.е. в системе одновременно может работать несколько задач (процессов), и каждая из задач может выполнятся в несколько потоков. Для начала рассмотрим, что такое поток: поток выполнения - это элемент кода программы, выполняемый последовательно. Большинство приложений - однопотоковые программы. Многопотоковая программа в один момент времени может выполняться в нескольких отдельных потоках. В случае, если задача выполняется на многопроцессорной машине, то все ее потоки могут выполняться одновременно, повышая таким образом производительность выполнения задачи. Производительность многопотокового приложения можно улучшить даже на однопроцессорной системе. Например, если один из потоков приложения блокируется каким-то системным вызовом или ожидает поступления данных, в это время выполняется другой поток.

Между процессами и потоками существуют различия. Под процессами понимается программа находящаяся в стадии выполнения. Скажем, shell в UNIX - это процесс который создается при входе пользователя в систему. Каждая команда создает новый процесс. Согласно терминологии UNIX - это порожденный процесс, который выполняет команду от лица пользователя. Потоки - это часть процесса, и они используют сегменты данных и кода совместно.

Для многопотокового программирования существует два основных стандарта: многопотоковые API Solaris (Sun Microsystems) и API POSIX.1c

В Linux используется API POSIX.1c. Но если быть абсолютно точным, то в Linux присутствует системный вызов clone(), на основе которого и построено API для работы с потоками, соответствующие стандарту POSIX.1c с незначительными исключениями.



Содержание раздела