Maison > développement back-end > C++ > le corps du texte

Le garbage collector conservateur de Boehm peut-il être intégré à la bibliothèque standard C pour les applications multithread ?

Linda Hamilton
Libérer: 2024-10-26 16:28:30
original
464 Les gens l'ont consulté

Can Boehm's Conservative Garbage Collector Be Integrated with the C   Standard Library for Multi-threaded Applications?

Intégration du garbage collection conservateur avec la bibliothèque standard C

Question :

Dans un environnement multi -threaded C, le garbage collector (GC) conservateur de Boehm peut-il être utilisé efficacement en conjonction avec la bibliothèque standard C ? Plus précisément, comment l'opérateur ::new et les allocateurs fournis par std::vector et std::string doivent-ils être gérés ?

Réponse :

1. Redéfinir l'opérateur ::new:

Redéfinir ::operator new avec le GC de Boehm n'est pas nécessaire. En utilisant correctement le GC de Boehm, il est possible d'éviter de redéfinir explicitement ::operator new.

2. Allocateurs pour les conteneurs de bibliothèque standard :

std::vector:

  • Utilisez std::vector avec un paramètre d'allocation explicite défini sur gc_allocator de Boehm. Cela garantit que la structure de données interne et les éléments individuels sont alloués par GC.

std::string:

  • Pour allouer le tableau de caractères interne, utilisez votre propre implémentation de chaîne personnalisée dérivée de std::basic_string et employez gc_allocator.
  • Il n'existe pas de moyen simple de forcer l'allocation GC_malloc_atomic pour le tableau de caractères dans l'implémentation standard.

Exemple :

Le code suivant démontre une implémentation personnalisée d'un vecteur alloué par GC :

<code class="cpp">#include <gc/gc_cpp.h>
#include <gc/gc_allocator.h>
#include <vector>

class Myvec {
  std::vector<int, gc_allocator<int>> _vec;
public:
  Myvec(size_t sz = 0) : _vec(sz) {}
  // ... (rest of class implementation)
};</code>
Copier après la connexion

3. Compatibilité avec g :

Oui, il est possible d'utiliser Boehm GC avec une application compilée par g . Suivez les directives ci-dessus pour intégrer efficacement GC à la bibliothèque standard.

Addendum (janvier 2017) :

  • Vérifiez les propositions n2670 et et prise en charge du garbage collection pour les améliorations futures potentielles des capacités de garbage collection de C.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!