Ключова різниця : Thread і Process - два тісно пов'язані терміни в багатопоточності. Основна відмінність між цими двома термінами полягає в тому, що потоки є частиною процесу, тобто процес може містити одну або більше потоків, але потік не може містити процес.
У програмуванні є дві основні одиниці виконання: процеси і потоки. Обидва вони виконують ряд інструкцій. Обидва ініціюються програмою або операційною системою. Ця стаття допомагає диференціювати ці два підрозділи.
Процес має автономне середовище виконання. Він має повний набір приватних основних ресурсів часу виконання; зокрема, кожен процес має свій власний простір пам'яті. Процеси часто вважаються подібними до інших програм або додатків. Однак функціонування єдиної заявки може фактично бути сукупністю взаємодіючих процесів. Для полегшення зв'язку між процесами більшість операційних систем використовують ресурси Inter Process Communication (IPC), такі як труби та сокети. Ресурси МПК також можуть використовуватися для зв'язку між процесами на різних системах. Більшість додатків у віртуальній машині запускаються як один процес. Однак він може створювати додаткові процеси, використовуючи об'єкт-будівельник процесу.
У комп'ютерах потік може виконувати навіть найменшу послідовність запрограмованих інструкцій, якими можна керувати самостійно за допомогою операційної системи. Додатки потоків і процесів відрізняються від однієї операційної системи до іншої. Проте, потоки складаються і існують в процесі; кожен процес має принаймні один. Кілька потоків також можуть існувати в процесі і спільно використовувати ресурси, що допомагає в ефективній комунікації між потоками.
На одному процесорі відбувається багатозадачність, коли процесор перемикається між різними потоками; вона відома як багатопоточність. Перемикання відбувається так часто, що потоки або завдання сприймаються одночасно. Нитки дійсно можуть бути одночасними на багатопроцесорній або багатоядерній системі, при цьому кожен процесор або ядро виконує окремі потоки одночасно.
У підсумку, потоки можуть розглядатися як легкі процеси, оскільки вони містять прості набори інструкцій і можуть виконуватися в межах більш великого процесу. Комп'ютери можуть запускати кілька потоків і процесів одночасно.
Порівняння між процесом і темою:
Процес | Нитка | |
Визначення | Виконуючий екземпляр програми називається процесом. | Потік - це підмножина процесу. |
Процес | Він має власну копію сегмента даних батьківського процесу. | Він має прямий доступ до сегменту даних свого процесу. |
Спілкування | Процеси повинні використовувати межпроцессное спілкування для обміну даними з двома процесами. | Нитки можуть безпосередньо спілкуватися з іншими потоками свого процесу. |
Накладні витрати | Процеси мають значні накладні витрати. | Нитки майже не мають накладних витрат. |
Створення | Нові процеси вимагають дублювання батьківського процесу. | Нові потоки легко створюються. |
Контроль | Процеси можуть здійснювати лише контроль над дочірніми процесами. | Нитки можуть здійснювати значний контроль над потоками одного і того ж процесу. |
Зміни | Будь-які зміни в батьківському процесі не впливають на дочірні процеси. | Будь-яка зміна в головному потоці може впливати на поведінку інших потоків процесу. |
Пам'ять | Запускати в окремих місцях пам'яті. | Запустіть у місцях спільної пам'яті. |
Дескриптори файлів | Більшість дескрипторів файлів не розділяються. | Він поділяє файлові дескриптори. |
Файлова система | Немає спільного використання контексту файлової системи. | Він поділяє контекст файлової системи. |
Сигнал | Він не поділяє обробку сигналів. | Він ділиться обробкою сигналів. |
Контрольовано | Процес контролюється операційною системою. | Нитки контролюються програмістом у програмі. |
Залежність | Процеси незалежні. | Нитки залежні. |