Різниця між процесами і потоками


Next: Переваги многопоточности Up: Потоки (threads) Previous: Потоки (threads) Contents

За допомогою процесів можна організувати паралельне виконання програм. Для цього процеси клонуються викликами fork () або exec (), а потім між ними організується взаємодія засобами IPC. Це досить дорогий щодо ресурсів процес.

З іншого боку, для організації паралельного виконання і взаємодії процесів можна використовувати механізм многопоточности. Основною одиницею тут є потік.

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

  • власнику ресурсу, якого зазвичай називають процесом або завданням, притаманні:
  • стан виконання (активне, готовність і т.д.);
  • збереження контексту потоку в неактивному стані;
  • стек виконання і деяка статична пам'ять для локальних змінних;
  • доступ до простору пам'яті і ресурсів свого процесу.
Всі потоки процесу поділяють спільні ресурси. Зміни, викликані одним потоком, стають негайно доступні іншим.

При коректної реалізації потоки мають певні переваги перед процесами. Їм потрібно: