Достаточно сделать несколько горячих циклов (по количеству ядер) и, даже если они постоянно вызывают cede, часть работы будет навсегда вытеснена в ождание и не вернется
мне почему-то казалось что должен быть "примитив" типа ожидать значения в "контейнере". типа как ref, но нужен метод .await(v => boolean), и проверка бы триггерилось на каждое изменение.
семафор захватывает "пермиты", у меня ничего не доолжно захватываться либо барьер открыт для всех и все идут без ограничений дальше, либо барьер (или latch) закрыт и все кто доходит ждут пока снова откроется