|
Bas de page | |
---|---|
Auteur | Sujet : Gestion des pointeurs sur instance |
Publicité | Posté le 02-06-2013 à 00:37:16 |
Terminapor I'll see you rise. | Je up le topic, j'ai pondu un code Donc, le système vérifie que les pointeurs sont valides / mettent à jour la liste uniquement si SAFEPOINTERS est défini, niveau perfs ça donne : Benchmark (SafePointers enabled) : Et voilà le code de la class :
Si vous avez des conseils pour améliorer la qualité du code ou la vitesse d'exécution, je suis preneur edit : Désolé, j'arrive pas à avoir la bonne mise en page, y'a des lignes qui sont très mal foutu Message édité par Terminapor le 02-06-2013 à 13:25:12 --------------- Perhaps you don't deserve to breathe |
Joel F Real men use unique_ptr | deja utilisait un ruc ecrit proprement genre boost::shared_ptr me parait mieux que d'ecrire une n-ieme classe de gestion de pointeurs.
|
Terminapor I'll see you rise. | Mais si j'ai bien compris, les shared_ptr ont un système de comptage de références, et dès que ça atteint 0 l’élément est supprimé.
--------------- Perhaps you don't deserve to breathe |
Terminapor I'll see you rise. | Ok je viens de voir qu'en fait, y'avait les std::weak_ptr qui permettent de faire plus ou moins ce que je veux. Mais le soucis, c'est que pour modifier une valeur du pointeur (ou simplement lire), il faut absolument régénérer un shared_ptr à partir du weak_ptr, et ça serait chiant à mettre en place un système pour bypasser toute la vérification des pointeurs lors de la compilation en release. edit : D'un autre côté, le fait de devoir régénérer un shared_ptr fait que je suis sûr à 100% qu'en cas d'usage sur un thread séparé, mon pointeur sera valide et ne pourra pas être supprimé lors d'un appel de fonction.. Message édité par Terminapor le 03-06-2013 à 18:47:05 --------------- Perhaps you don't deserve to breathe |
theshockwave I work at a firm named Koslow | C'est quoi, ton cas de figure ?
--------------- last.fm |
Terminapor I'll see you rise. | Non, c'est pas une ressource mais simplement une instance qui est un mesh dans une scène.
--------------- Perhaps you don't deserve to breathe |
theshockwave I work at a firm named Koslow | pour ce genre d'évènement que tu décris, je aurais une préférence pour avoir les N ennemis qui ont un pointeur et ne se soucient pas de son passage à NULL, et, plutôt un système d'évènement robuste pour notifier de la disparition de l'entité qu'ils ciblent. --------------- last.fm |
Terminapor I'll see you rise. | Ah oui, j'avais pas pensé à ça (même si je pense que dans le cas des meshes c'est pas trop possible)
--------------- Perhaps you don't deserve to breathe |
theshockwave I work at a firm named Koslow |
dans ma boîte, on a un système d'évènement agnostique qui accepte juste une clé. Tu peux t'enregistrer de manière globale ou avec une clé donnée (Edit/précision : c'est un enregistrement actif en fonction des intérêts de ton observer, pas un système de messages pour tout le monde). Ca te fait atterrir dans des ensembles d'observers différents. Du coup, quand tu signales la disparition de ton truc, tu files son identifiant (quitte à ce que ce soit directement le pointeur de la ressource, hein) et du coup, ca ne va notifier que ceux qui sont intéressés par cette clé là ou l'intégralité de ces messages. Ca garde raisonnable le volume d'observers Pour ton histoire de mesh, ca me chiffonne tout de même un peu que ce ne soit pas justement une ressource, après, c'est peut-être juste une question de terminologie, hein. Message édité par theshockwave le 04-06-2013 à 16:03:54 --------------- last.fm |
Publicité | Posté le 04-06-2013 à 15:59:14 |
Terminapor I'll see you rise. | Mais pour un tel système, faut bien à un moment parcourir les événement, non ? --------------- Perhaps you don't deserve to breathe |
theshockwave I work at a firm named Koslow | J'ai tendance à partir dans l'optique inverse : ton mesh est une ressource, si ton manager de meshes s'aperçoit qu'il est le seul à avoir des références sur un mesh donné, alors il peut le détruire, sinon, c'est que quelqu'un a besoin de le rendre. Je trouve surprenant de garder un pointeur sur une donnée graphique si c'est pas pour qu'elle soit dans ta scène.
--------------- last.fm |
Terminapor I'll see you rise. | Effectivement j'avais pas pensé le problème dans l'autre sens, puisque techniquement si un mesh est supprimé, c'est que l'objet qui le manipule est aussi supprimé.
--------------- Perhaps you don't deserve to breathe |
Sujets relatifs | |
---|---|
Gestion des pop-up avec SELENIUM | égalité des pointeurs |
VBA Gestion de Portefeuille, portefeuille optimal | [C] [Résolu] Tetris -> SDL ? Réseaux ? |
Upload de fichier + gestion comptes utilisateurs | Gestion de la mémoire / recherche de fuites |
[SQL] Requete gestion stock ??? | Probleme : Tableau de pointeurs sur structure |
stage en licence troisième année economie gestion | |
Plus de sujets relatifs à : Gestion des pointeurs sur instance |