Novecento Normal
Novecento Demibold
Novecento Bold
Actor-based concurrent object framework for Ruby
Pour bien commencer, qu’est-ce qu’un acteur ? C’est une entité de calcul qui échange des messages avec d’autres entités. Ou pour citer Alan Kay, le créateur de Smalltalk :
Je pense à des objets qui seraient comme des cellules ou comme des ordinateurs sur un réseau, seulement capables de communiquer avec des messages.
En gros voici un bel outil pour faire de la programmation tolérante aux fautes, très concurrentielle. Le tout en Ruby via un framework qui nous permet de faire abstraction de la partie gestion des processus, du multithread, des locks… Tout ce que qu’on aime quoi !
Un exemple simple, votre première cellule :
require 'celluloid'
class Counter
# C'est tout ce que vous avez à faire pour transformer une classe Ruby en un Acteur Celluloid
include Celluloid
# Maintenant on fait comme d'habitude
attr_reader :count
def initialize
@count = 0
end
def increment(n = 1)
@count += n
end
end
# On crée un objet simplement sauf qu'il s'agit d'un objet qui parle à une cellule disposant de son propre processus
actor = Counter.new
# La suite marche comme d'habitude :)
p actor.count
Ce petit exemple vous montre juste la simplicité d’intégration de Celluloid à vos boulots. Pour une utilisation plus complète, un peu de lecture.
Les liens utiles