Когда автор теоретической статьи, подобной этой, пишет «конечное число шагов», это означает, что существует некоторая постоянная k
(вы не обязательно знаете k
), так что количество шагов меньше чем k
(т. е. ваше время ожидания точно не будет бесконечным).
Я не уверен, что означает «op» в этом контексте, но обычно, когда у вас многопоточная программа, потоки могут ждать, пока что-то сделают друг друга.
Пример: поток имеет блокировку, и другие потоки ожидают освобождения этой блокировки, пока они не смогут работать.
Этот пример не является свободным ожиданием, поскольку, если поток, удерживающий блокировку, не получает возможности выполнить какие-либо операции (это плохо, так как здесь требуется, чтобы другие потоки продолжались независимо от любого другого потока), другие потоки обречены и никогда не добьются прогресса.
Другой пример: есть несколько потоков, каждый из которых пытается CAS по одному и тому же адресу
Этот пример не требует ожидания, потому что, хотя все потоки, кроме одного, в такой операции не будут работать, всегда будет прогресс, независимо от того, какие потоки выбраны для запуска.