Поток – единица выполнения. Это сущность внутри процесса, подлежащая планированию. Это отдельный счётчик команд. Поток отображает одну из возможно многих подзадач процесса.
Многопоточность ( англ. multi-threading) - свойство операционной системы или приложения , заключающийся в том, что процесс , порожденный в операционной системе, может состоять из нескольких потоков , выполняющихся параллельно, или даже одновременно на многопроцессорных системах. При выполнении некоторых задач такое разделение может достичь более эффективного использования ресурсов компьютера .
Сутью многопоточности является квази-многозадачность на уровне одного исполняемого процесса, то есть все нити выполняются в адресном пространстве процесса. Кроме этого, все нити процесса имеют не только общий адресное пространство, но и общие дескрипторы файлов. Процесс, который выполняется, имеет как минимум одну (главную) нить.
Многопоточность (как доктрину программирования) не следует путать ни с многозадачностью , ни с много-процесорнистю, несмотря на то, что операционные системы, реализующие многозадачность, как правило реализуют и многопоточность.
Преимущества в многопоточности следующие:
· Упрощение программы в некоторых случаях, за счет использования общего адресного пространства
· Меньшие относительно процесса временные затраты на создание нити и взаимодействие между потоками
· Повышение производительности процесса за счет распараллеливания процессорных вычислений и операций ввода / вывода
Каждый процесс имеет таблицу потоков, аналогичную таблице процессов ядра.
Преимущества этого типа следующие:
· возможность реализации на ядре, что не поддерживает многопоточность
· скорее переключение, создание и завершение потоков
· процесс может иметь собственный алгоритм планирования.
Недостатки:
· отсутствие прерывания по таймеру внутри одного процесса
· при использовании блокирующего системного запроса остальные потоков блокируется
· отсутствует выигрыш в быстродействии на много-процессорных системах
· сложность реализации