Предположим:Проснувшись выталкивания уведомления
- Существует некоторый объект (например, массив
a
) и условие зависит от объекта (например, таких, какa.empty?
). - Некоторые потоки, отличные от текущего потока, могут манипулировать объектом (
a
), поэтому истинность оцениваемого значения условия изменяется с течением времени.
Как я могу позволить текущей нитке спать в какой-то момент кода и продолжать (просыпаться) путем push-уведомления, когда условие выполняется?
Я не хочу, чтобы сделать опрос, как это:
...
sleep 1 until a.empty?
...
Возможно, с помощью Fiber
будет ключ.
Независимо от условия, напишите крюк, который вызывается при каждом вызове вашего поведения. Он может содержать коллекцию объектов, возможно, нитей или волокон, которые могут быть обработаны в это время. Это было бы похоже на способ, возможно, [этот проект] (https://github.com/kristinalim/ruby_hooks) – vgoff