Précédent   Forum du club des développeurs et IT Pro > Autres langages > Langages fonctionnels > Haskell
Haskell Forum d'entraide sur la programmation en langage fonctionnel Haskell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 13/02/2010, 18h54   #1
limestrael
Nouveau Membre du Club
 
Avatar de limestrael
 
Inscription : juin 2009
Messages : 86
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 86
Points : 30
Points : 30
Par défaut FFI: désallocation automatique des callbacks

La page http://www.haskell.org/haskellwiki/G...m_foreign_code donne un petit exemple de comment faire passer une fonction haskell comme callback vers du code C.
Cependant, le FunPtr utilisé comme callback est désalloué à la main...

La technique pour éviter ça pourrait consister à créer un datatype contenant un ForeignPtr et tous les callbacks envoyés vers le C, et d'ajouter au ForeignPtr un FinalizerPtr qui désallouerait automatiquement les callbacks avec freeHaskellFunPtr. Cependant ce n'est pas possible, car les FinalizerPtr n'ont pas accès aux types Haskell (et donc pas aux callbacks).
La fonction Foreign.Concurrent.addForeignPtrFinalizer permet d'ajouter une action IO arbitraire à un ForeignPtr, action qui sera lancée lors du garbage collecting du ForeignPtr, le problème est que cette méthode ne marche que sous GHC.

Y a-t-il une autre méthode qui soit portable (c'est important), et qui permettrait ainsi d'éviter d'avoir à désallouer à la main les FunPtr ?
limestrael est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h27.


 
 
 
 
Partenaires

Hébergement Web