Пусть есть 2 потока. Поток 1 синхронизирует себя завершением какой-либо задачи в другом потоке, постоянно просматривая значения некоторой переменной, доступной из обоих потоков.
поток 1 |
f:=false |
создание двух потоков |
f=true |
поток 2 |
вычисления |
f:=true |
выход |
нет
да
дальнейшая работа |
выход |
Существуют проблемы.
1. Первый поток никогда не впадает в «спячку». Он тратит время процессора на проверки.
2. Булева переменная f никогда не примет значения true.
Вывод: синхронизация необходима.