Чому нитки називають нитками?


9

Я розумію, що це обробка одиниці володіння ресурсами та виконуваних інструкцій. Нитки дозволяють процесу обмінюватися своїми ресурсами з кількома виконаннями, а ОС легше планувати потоки через усі накладні витрати, пов'язані з цілими процесами.

Але чому нитка імені ? Чи має якесь посилання на рядок або переплетення виконання? Тим не менш, на мою думку, це не інтуїтивно зрозумілий термін.

Відповіді:


11

Ви шукали в словнику? Слово нитка має значення минулого шиття.

3: щось суцільне або витягнуте: як

a: рядок міркувань або подумок думки, який з'єднує частини в послідовності (як ідеї чи події)

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


Цікаво. Я здійснив пошук "визначити потік", але це визначення не було одним із них. Я радий, що ви згадали про це, адже це досить абстрактно, щоб перейти міст через загальне використання до програмування.
Метт

9

Коли-небудь бачили, як множинні нитки, скручені, утворюють товстіший, міцніший шнур?

Це метафора, кожен потік є незалежним, але всі потоки разом співпрацюють до остаточного обчислювального результату. Крім того, як і в текстильній нитці, нитка може розірватися без шкоди для структури всього шнура.

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


2
в той час як я завжди малював "нитки" просто ви та GrandmasterB описали їх, не впевнені в цілому "закручений, товстіший, міцніший шнур". Натомість більшість потоків в ОС виглядають приблизно так: miqel.com/bonnaroo_2008_music/yarn_string_trips.jpg (хлопець праворуч був би контролером пам’яті) Так, іноді кілька цих рядків призначені для вирішення загальної проблеми, але більшість з них просто там і ОС просто дозволяє їм робити все, що завгодно (в межах розуму)
DXM

7

tl; dr: Вони називаються нитками, оскільки "нитка" - це влучна метафора.


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

Тож страта стрибає всюди. Але цілісність набору машинних інструкцій залишається недоторканою, незважаючи на ці стрибки, оскільки ми будуємо огорожі та механізми одночасності захисту свого стану та стану об'єктів, з якими взаємодіє.

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

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


Якщо цей опис здається занадто вагомим та абстрактним, тоді подумайте про тему на форумі, як Reddit. Ви можете відгалужувати нові дискусії; кожна дискусія - своя власна нитка. Ви можете стрибати вперед і назад між нитками. Але кожна нитка все ще зберігає свою структурну цілісність як індивідуальну розмову.


4

Важко розплутати (каламбур повністю призначений) джерелом терміна "Нитка", оскільки різні речі каламутять води.

Використання теми у форумі чи сенсі електронної пошти майже напевно випливає із фрази "нитка розмови", яка відповідно до цього датується 1593 роком.

Дещо здається менш зрозумілим для значення теми, про яку ви запитуєте, хоча оскільки за цим посиланням, потоки, як ми їх знаємо, насправді не називались "потоками" до 70-х чи, можливо, початку 80-х, незважаючи на реалізацію процесу спільної пам'яті насправді випереджаючи те, що ми вважаємо сьогодні важкими процесами. З огляду на те, що споріднена форма багатопроцесорної пам’яті спільної пам'яті називається «волокнистою», я сильно підозрюю, що слово «нитка», мабуть, нагадує ткацьке полотно чи якусь іншу аналогію, пов'язану з текстилем.


3

Я думаю, що це стосується "нитки міркувань" або "нитки думки".

На відміну від процесу, потоки діляться пам’яттю. Отже, якщо процес уподібнюється людині з її власним розумом (пам'яттю), нитка може уподібнюватися з однією лінією думки всередині цього розуму.


1

Я десь читав аналогію ниток у програмуванні. Мислення процесора як швейної голки, а нитка - як власне рядок. Тепер якщо у вас кілька швейних голок, але лише одна нитка. Ви не думаєте, це буде досить неефективно. Інша CPU / голка для шиття буде чекати, коли нитка стане доступною. Однак якщо у нас є кілька ниток, то завдання можна виконати за короткий час.


1
що не так з ним? Чому -1?
спритний
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.