Я вивчав «Мистецтво багатопроцесорного програмування» 1, і їх текст не вистачає ясності, як і книга, про яку ви посилаєтесь. Ось кілька цитат з TAMPP:
Цитата 1 (Визначення безблокового)
Метод не заблокований, якщо він гарантує, що нескінченно часто якийсь виклик методу закінчується в кінцевій кількості кроків.
Цитата 2 (Визначення розблокування)
очікуване виклик загального методу ніколи не потрібно чекати завершення чергового виклику в очікуванні.
Цитата 3 (заявіть, що без блокування блокується)
Умови прогресу безблокування, що чекає, і без блокування гарантують, що обчислення в цілому досягає прогресу, незалежно від того, як система планує потоки.
Проблема полягає в тому, що претензія в Цитаті 3 очевидно не випливає з визначення в Цитаті 1. Як уже згадувалося, синхронізована черга, здається, задовольняє Цитата 1: нескінченно часто якийсь метод успішно придбає замок і завершиться.
Зазначимо конкретно досить невиразну фразу в цитаті 3: "незалежно від того, як система планує потоки". Цьому не передує формальний опис "системи планування потоків", тому нам залишається реконструювати її властивості, виходячи з наших попередніх уявлень про те, що повинні означати визначення :
- система завжди виконує вказівки якогось потоку;
- він ніколи не може виконувати вказівки будь- якого потоку;
- всі потоки викликають розглянутий метод.
У такій системі спосіб блокування не може бути заблокованим: якщо потік, що тримає замок, більше ніколи не буде запланований до виконання, не буде іншого потоку, який може завершити виклик методу в кінцевій кількості кроків, але все ж буде деякі потоки, які виконують етапи методу. Для більш реалістичної системи, яка гарантує дати час процесора кожному потоку в кінцевому підсумку, визначення повинно явно містити властивість, що не блокує:
Виправлене визначення без замка
Метод є безблоковим, якщо він не блокує, і, крім того, гарантує, що нескінченно часто якийсь виклик методу закінчується в кінцевій кількості кроків.
1 Моріс Херліхі, Нір Шавіт, Мистецтво багатопроцесорного програмування, Elsevier 2008, с. 58-60