tl; dr: Вони називаються нитками, оскільки "нитка" - це влучна метафора.
Коли ви запускаєте потік, ви покладаєтесь на операційну систему, щоб виділити час обробки, щоб ваш потік міг виконати. Поки ваша нитка виконується, процесор (або ядро) приділяє всю свою увагу своїй потоці. Коли операційна система перемикає ядро на інший потік, ваш потік припиняє виконуватись, поки інший потік обслуговується.
Тож страта стрибає всюди. Але цілісність набору машинних інструкцій залишається недоторканою, незважаючи на ці стрибки, оскільки ми будуємо огорожі та механізми одночасності захисту свого стану та стану об'єктів, з якими взаємодіє.
Таким чином, потік посилається не на виконання вказівок у будь-якому конкретному потоці, а на інструкції, які в кінцевому підсумку будуть виконані в створеній нами нитці. Кожен потік, іншими словами, можна розглядати як окрему машину чи агент (ми називаємо їх легкими процесами), не замислюючись про всі контекстні комутатори, які виконує операційна система, щоб видати, що вони всі виконання одночасно.
Іншими словами, незважаючи на всі стрибки навколо того, що ОС робить за кадром, те, що ми називаємо потоком (послідовність операцій, які ми виконуємо в легкому процесі), все ще може розглядатися як однакова послідовність операцій, якби ми не породили цю нитку, якщо припустити, що ми вжили необхідні засоби захисту одночасності.
Якщо цей опис здається занадто вагомим та абстрактним, тоді подумайте про тему на форумі, як Reddit. Ви можете відгалужувати нові дискусії; кожна дискусія - своя власна нитка. Ви можете стрибати вперед і назад між нитками. Але кожна нитка все ще зберігає свою структурну цілісність як індивідуальну розмову.