Skip to main content

Что такое многопоточность?

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

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

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

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