Я понимаю, что процесс единица владения ресурсами и исполняемые инструкции. Потоки позволяют процессу совместно использовать свои ресурсы с несколькими выполнениями, и для ОС проще планировать потоки из-за всех издержек, связанных с целыми процессами.
Но почему название потока ? Есть ли какая-то ссылка на строку или чередование выполнения? Несмотря на это, по моему мнению, это не интуитивный термин.
Когда-нибудь видели, как несколько нитей, скрученных, образуют более толстый, более прочный шнур?
Это метафора, каждый поток независим, но все потоки вместе работают с конечным результатом вычислений. Кроме того, как и в текстильной нити, нить может порваться без ущерба для структуры всего корда.
источник
tl; dr: они называются потоками, потому что «поток» является подходящей метафорой.
Когда вы запускаете поток, вы полагаетесь на операционную систему для распределения времени обработки, чтобы ваш поток мог выполняться. Пока ваш поток выполняется, процессор (или ядро) уделяет все внимание вашему потоку. Когда операционная система переключает ядро на другой поток, ваш поток прекращает выполнение, пока другой поток обслуживается.
Таким образом, исполнение прыгает повсюду. Но целостность набора машинных инструкций остается неизменной, несмотря на эти скачки, потому что мы создаем механизмы защиты и параллелизма для защиты его состояния и состояния объектов, с которыми он взаимодействует.
Таким образом, поток относится не к выполнению инструкций в каком-либо конкретном потоке, а к инструкциям, которые в конечном итоге будут выполняться в созданном нами потоке. Другими словами, каждый поток можно рассматривать как отдельную машину или агент (мы называем их легкими процессами), не думая обо всех переключениях контекста, которые выполняет операционная система, чтобы создать впечатление, что они все выполняется одновременно.
Другими словами, несмотря на все прыжки вокруг, которые ОС делает за кулисами, то, что мы называем потоком (последовательность операций, которые мы выполняем в облегченном процессе), все еще может рассматриваться как та же самая последовательность операций, если бы мы не породили нить, предполагая, что мы приняли необходимые средства защиты от параллелизма.
Если это описание кажется слишком весомым и абстрактным, подумайте о ветке на форуме, например, Reddit. Вы можете отказаться от новых обсуждений; каждое обсуждение - это отдельная тема. Вы можете прыгать вперед и назад между потоками. Но каждый поток все еще сохраняет свою структурную целостность как отдельный разговор.
источник
Трудно распутать (капризный каламбур) источник термина "Нить", потому что разные вещи мутят воду.
Использование темы в форуме или в электронном письме почти наверняка происходит от фразы «тема разговора», которая в соответствии с этим восходит к 1593 году.
Кажется, что вещи менее понятны для смысла потока, о котором вы спрашиваете, поскольку, согласно этой ссылке, потоки, как мы их знаем, фактически не назывались «потоками» до 70-х или, возможно, в начале 80-х, несмотря на реализацию процесса совместной памяти на самом деле предшествует тому, что мы считаем сегодня тяжеловесными процессами. Учитывая, что связанная форма многопроцессорной обработки совместно используемой памяти называется «волокном», я сильно подозреваю, что слово «нить» должно напоминать ткацкое полотно или некоторую другую аналогию с текстилем.
источник
Я думаю, что это связано с «нитью рассуждения» или «нитью мысли».
В отличие от процесса, потоки разделяют память. Таким образом, если процесс сравнивается с человеком с его собственным умом (памятью), нить можно сравнить с одной мыслью в этом уме.
источник
Я где-то читал аналогию с нитями в программировании. Думаю, что CPU - это швейная игла, а нить - как фактическая нить. Теперь, если у вас есть несколько швейных игл, но только одна нить. Тебе не кажется, что это будет совсем неэффективно. Другой процессор / швейная игла будет ожидать, когда нить станет доступной. Однако, если у нас несколько потоков, работа может быть выполнена за короткое время.
источник