J'essaie de faire fonctionner un acteur mais cela ne fonctionne que partiellement. MyActor se met au travail toutes les secondes et exécute une tâche en s'appelant lui-même dans une boucle.Scala L'acteur ne fonctionne pas comme prévu
Cette partie fonctionne très bien.
Je voudrais également appeler MyActor de manière aléatoire à partir d'autres parties de mon application.
Cela ne fonctionne PAS. MyActor incrémente sa boîte aux lettres mailboxSize, puis continue avec la boucle et ne récupère jamais aucun des messages envoyés de l'extérieur.
case class DoJob(fast:Boolean)
object MyActor extends Actor {
def act = {
loop {
MyActor ! DoJob(false)
receive {
case DoJob(fast) => {
Job.perform(fast)
}
}
Thread.sleep(1000)
}
}
}
Ce qui suit ne fonctionne pas en termes d'appel DoJob (vrai), mais incrémente simplement la taille de la boîte aux lettres de MyActor:
MyActor ! DoJob(true)
Qu'est-ce qui pourrait être mal ici?
Vous avez appelé '.start' dessus, non? – wheaties
Oui, oui, la boucle fonctionnerait-elle autrement? – trajectory