Devs Hive
Повернутися до всіх запитань

Яка різниця між Process i Thread в Node.js?

Node.jsMiddleSenior
Зустрічали на інтервʼю:4 користувачів

Саме запитання більше відноситься до Computer Science, але його досить часто задають на Node.js інтервʼю, тому має сенс розібрати його саме в цій категорії. Для початку розберемося з визначенням процесу і потоку.

Процес - це окремо запущена програма, якій виділяє ресурси операційна система. Ключова ідея процесу полягає в ізоляції, тому проблеми в одному процесі напряму не впливають на інші, а комунікація відбувається через IPC (inter-process communication), наприклад через pipes, sockets…

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

Нижче наведена схема типового Node.js API, який використовує декілька процесів. Тут чітко видно, що потоки знаходяться в середині процесів, а сам процес - це ізольований контейнер.

Також, зверніть увагу на іконки Libuv - вони є як в процесі, так і в дочірніх потоках. Це означає, що при створенні потоку/процесу буде створено окремий Event Loop.

Підсумуємо основні відмінності

  1. Процес це так званий top-level контейнер
  2. Кожен процес має свою памʼять тоді як потоки використовують спільну
  3. Життєвий цикл процеса незалежний, тоді як потік залежить від процеса
  4. Комунікація між процесами повільніша і не така ефективна, як між потоками.

Зустрічав на інтервʼю?

Коментарі (0)

Увійдіть, щоб залишити коментар

Поки що немає коментарів. Будьте першим!