Почему темы называются потоками?

9

Я понимаю, что процесс единица владения ресурсами и исполняемые инструкции. Потоки позволяют процессу совместно использовать свои ресурсы с несколькими выполнениями, и для ОС проще планировать потоки из-за всех издержек, связанных с целыми процессами.

Но почему название потока ? Есть ли какая-то ссылка на строку или чередование выполнения? Несмотря на это, по моему мнению, это не интуитивный термин.

Matt
источник

Ответы:

11

Вы смотрели в словаре? Слово нить имеет значение после шитья.

3: что-то непрерывное или вытянутое: как

а: линия рассуждений или ход мыслей, который соединяет части в последовательности (как идеи или события)

http://www.merriam-webster.com/dictionary/thread

GrandmasterB
источник
Интересно. Я выполнил поиск «определить нить», но это определение не было одним из них. Я рад, что вы упомянули об этом, потому что это достаточно абстрактно, чтобы перейти от общего использования к программированию.
Мэтт
9

Когда-нибудь видели, как несколько нитей, скрученных, образуют более толстый, более прочный шнур?

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

введите описание изображения здесь

Тулаинс Кордова
источник
2
в то время как я всегда представлял «нити», только вы и GrandmasterB описывали их, не будучи уверенными в целом «скрученном, более толстом и прочном шнуре». Вместо этого большинство потоков в ОС выглядят примерно так: miqel.com/bonnaroo_2008_music/yarn_string_trips.jpg (парень справа будет контроллером памяти) Да, иногда несколько из этих строк предназначены для решения общей проблемы, но большинство только там, и ОС просто позволяет им делать все, что они хотят (в пределах разумного)
ДХМ
7

tl; dr: они называются потоками, потому что «поток» является подходящей метафорой.


Когда вы запускаете поток, вы полагаетесь на операционную систему для распределения времени обработки, чтобы ваш поток мог выполняться. Пока ваш поток выполняется, процессор (или ядро) уделяет все внимание вашему потоку. Когда операционная система переключает ядро ​​на другой поток, ваш поток прекращает выполнение, пока другой поток обслуживается.

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

Таким образом, поток относится не к выполнению инструкций в каком-либо конкретном потоке, а к инструкциям, которые в конечном итоге будут выполняться в созданном нами потоке. Другими словами, каждый поток можно рассматривать как отдельную машину или агент (мы называем их легкими процессами), не думая обо всех переключениях контекста, которые выполняет операционная система, чтобы создать впечатление, что они все выполняется одновременно.

Другими словами, несмотря на все прыжки вокруг, которые ОС делает за кулисами, то, что мы называем потоком (последовательность операций, которые мы выполняем в облегченном процессе), все еще может рассматриваться как та же самая последовательность операций, если бы мы не породили нить, предполагая, что мы приняли необходимые средства защиты от параллелизма.


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

Роберт Харви
источник
4

Трудно распутать (капризный каламбур) источник термина "Нить", потому что разные вещи мутят воду.

Использование темы в форуме или в электронном письме почти наверняка происходит от фразы «тема разговора», которая в соответствии с этим восходит к 1593 году.

Кажется, что вещи менее понятны для смысла потока, о котором вы спрашиваете, поскольку, согласно этой ссылке, потоки, как мы их знаем, фактически не назывались «потоками» до 70-х или, возможно, в начале 80-х, несмотря на реализацию процесса совместной памяти на самом деле предшествует тому, что мы считаем сегодня тяжеловесными процессами. Учитывая, что связанная форма многопроцессорной обработки совместно используемой памяти называется «волокном», я сильно подозреваю, что слово «нить» должно напоминать ткацкое полотно или некоторую другую аналогию с текстилем.

Evicatos
источник
3

Я думаю, что это связано с «нитью рассуждения» или «нитью мысли».

В отличие от процесса, потоки разделяют память. Таким образом, если процесс сравнивается с человеком с его собственным умом (памятью), нить можно сравнить с одной мыслью в этом уме.

Александр Торстлинг
источник
1

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

ловкий
источник
1
что с этим не так? Почему -1?
ловкий