Appelez le !! méthode d'un acteur à un autre acteur travailleur semble garder le canal ouvert même après que la réponse a été reçue par l'appelant (à savoir: le futur est prêt).Scala 2.8Beta1 Acteur
Par exemple, en utilisant !! pour envoyer 11 messages différents d'un acteur à un autre acteur de travail, 11 messages similaires à ceux ci-dessous seront affichés dans la boîte aux lettres de l'appelant original, chacun avec une valeur Channel @ xxxx différente.
! (Scala.actors.Channel @ 11b456f, sortie (com.test.app.actor.QueryActor @ 4f7bc2, «normal))
-ce que ces messages en attente de réponses du travailleur, comme l'appelant d'origine est envoyer un message de sortie sur son propre appel à exit(), ou sont-ils générés à l'autre extrémité, et pour une raison quelconque ont le formulaire imprimé ci-dessus? À ce stade, l'acteur travailleur a déjà quitté, donc l'appelant d'origine !! ne recevra certainement aucune réponse.
Ce comportement est indésirable, car la boîte aux lettres de l'acteur appelant d'origine se remplit de ces messages de sortie (un pour chaque canal créé à chaque fois !! a été utilisé).
Comment cela peut-il être arrêté? L'appelant original est-il automatiquement "lié" aux canaux de réponse créés sur chaque !! appel?
On dirait que lorsque le futur est créé, il est lié à l'acteur qui va fournir la valeur. Lorsque la valeur est définie, je pense qu'elle doit être dissociée. Cela empêcherait tous ces messages. En outre, l'accumulation dans la liste des liens est essentiellement une fuite de mémoire. –
Scala billet a été faite par M. Engbrecht https://lampsvn.epfl.ch/trac/scala/ticket/3102 –
@scaling_out Philipp a maintenant fermé le cocher. Il devrait être disponible sur le prochain tronçon de Scala tous les soirs, ou sur la prochaine bêta de Scala. –