Programmation asynchrone en Ruby : présentation de la gem Celluloid (Partie 4)

Après concurrent-ruby, continuons notre tour des gems avec Celluloid.

La syntaxe de la gem est identique au module Async de concurrent-ruby :

require "celluloid/current"
 
class Demonstration
  include Celluloid
 
  def dire_3s_plus_tard(phrase)
    sleep 3
    puts phrase
  end
end
 
demo = Demonstration.new
 
# Exemple synchrone, non thread-safe
demo.dire_3s_plus_tard("Premier")
puts "Second"
 
# Exemple asynchrone, non bloquant, thread-safe
demo.async.dire_3s_plus_tard("Second")
puts "Premier"

Ceci dit contrairement à concurrent-ruby, la méthode await n’existe pas pour écrire du code synchrone bloquant thread-safe. La gem implémente également les Futures, mais pas les Promises ni toutes les autres fonctionnalités présentées dans la partie 3. Elle est donc bien moins intéressante et ne semble pas avoir, au vu de sa faible documentation, de fonctionnalité particulière que n’offrirait pas son alternative.

Il existe probablement d’autres gems à étudier, telle que EventMachine (plus complexe et lourde à mettre en place), ceci dit je pense que concurrent-ruby peut déjà répondre à un éventail très large de cas de figure. Passons sans attendre à notre 5ème et dernière partie sur l’avenir en Ruby 3.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.