Une fois que j'ai terminé au milieu d'une instance Fiber fiber
c'est-à-dire que I yield
Je l'ai quitté sans l'avoir terminé, et je n'utilise pas d'outils d'aide à la décision. fiber
plus, que dois-je en faire ? Dois-je le détruire explicitement, ou existe-t-il une solution du type kill
pour un Fiber, ou sera-t-il collecté correctement ? Si c'est le cas, alors comment Ruby sait-il si je vais faire un fiber.resume
à l'avenir ou non ?
Réponse
Trop de publicités?Il n'est pas nécessaire de le tuer s'il est déjà mort ; yield
d'une fibre fera l'affaire. Vous devez simplement vous assurer que l'instance de la fibre n'est stockée dans aucune variable. C'est ainsi que vous les "libérez" : le garbage collector travaille en détruisant périodiquement les objets sans références vers eux. Si vous gardez votre fibre dans une variable, elle restera en mémoire jusqu'à ce que vous la rendiez inaccessible.