Ractors
Это пока что экспериментальная функция в Ruby - реализация шаблона проектирования «актёр-модель». При её использовании даже выводится предупреждение Ractor API is experimental and may change in future versions of Ruby (ruby 4.0.0).
Ractor использует преимущества глобальной блокировки интерпретатора (GIL), поскольку у каждого Ractor-а есть собственная блокировка, что позволяет выполнять заданные блоки параллельно. Ractor-ы не используют общие данные, поэтому они безопасны для потоков. Для отправки и получения состояний объектов используется система обмена сообщениями.
ractors = []
4.times do
ractors << Ractor.new do
1000.times { factorial(1000) }
end
end
# take response from ractor, so it will actually execute
ractors.each(&:take)