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

У багатозадачній комп'ютерній системі окремі задачі або потоки виконання повинні спільно використовувати ресурси системи. До спільних ресурсів належать: центральний процесор, мережа та мережеві інтерфейси, пам'ять і дискові накопичувачі.

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

Мови програмування та алгоритми планування розробляються таким чином, щоб мінімізувати загальний вплив блокування. Процес, що блокується, може перешкоджати просуванню локальних робочих задач. У такому випадку «блокування» часто вважається небажаним.C++ and Beyond 2012: Herb Sutter - C++ Concurrency Однак такі робочі задачі можуть бути натомість призначені незалежним процесам, де зупинка одного з них майже не впливає на інші, оскільки планування продовжуватиметься. Прикладом є «блокування на каналі», коли пасивне очікування іншої сторони (тобто без опитування або циклу активного очікування) є частиною семантики каналів. За умови належного проєктування будь-який із цих підходів може використовуватися для реалізації реактивних систем.

Взаємне блокування означає, що процеси патологічно очікують один на одного по колу. Тому воно не пов'язане безпосередньо з блокуванням.

Див. також Рівночасні обчислення Залежність даних Неблокуючий алгоритм Стан гонитви Планувальник операційної системи

Примітки