Паралелізм в С++ програмі досягається за рахунок поділу на декілька процесів або декілька потоків. Процес – це ²одиниця роботи², що реалізується операційною системою. Якщо програма – це артефакт (продукт діяльності) розробника, то процес – це артефакт операційної системи. Додаток може складатися з декількох процесів, які можуть бути не пов’язані з будь-якою конкретною програмою. Операційні системи можуть керувати сотнями і навіть тисячами процесів, які завантажуються паралельно.
Деякі дані та атрибути процесу зберігаються в блоці керування процесами (process control block – PCB), або БУП, що використовує операційна система для ідентифікації процесу. Багатозадачність (виконання одночасно декількох процесів) реалізується шляхом перемикання контексту. Біжучий стан процесу, який виконується, і його контекст зберігаються в БУП-блоці, що дозволяє успішно відновити цей процес в наступний раз, коли від буде призначений центральному процесору. Займаючи процесор, процес перебуває в стані виконання, а коли він очікує використання ЦП, - то в стані готовності (очікування). Отримати інформацію про процеси, що виконуються в системі, можемо за допомогою утиліти ps.
Процеси, які створюють інші процеси, вступають з ними в ²родинні² відношення. Творець процесу називається батьківським, а створений процес – дочірнім. Дочірні процеси успадковують від батьків множину атрибутів. ²Свята задача² батьківського процесу – почекати, коли дочірній не залишить систему. Для створення процесів передбачені різні системні функції: fork (), fork-exec (), system () та posit_spavn (). Функції fork (), fork-exec (), та posit_spavn () створюють процеси, які є асинхронними, в тоц час як system () створює дочірній процес, який є синхронним по відношенню до батьківського. Асинхронні батьківські процеси можуть викликати функцію wait (), після чого ²синхронно² очікувати, доки дочірні процеси де завершаться або поки не буде прочитано коди завершення для дочірніх процесів, що вже завершилися.
Програму можна розділити на декілька процесів. Ці процеси можуть породити батьківський процес, або вони можуть бути запущені з сценарію оболонки, як програми, що виконуються окремо. Спеціалізовані процеси можуть при необхідності породжувати інші процеси, передбачені для виконання дій тільки певного типу. Породження процесів може бути реалізовано як із функцій, так і з методів.