RAII

RAII

RAII est l'acronyme anglais de Resource Acquisition Is Initialization, que l'on peut traduire littéralement par l'Acquisition d'une Ressource est une Initialisation. Il s'agit d'une technique de programmation utilisée dans plusieurs langages orientés objet, comme le C++, D et ADA. Cette technique, inventée par Bjarne Stroustrup[1], permet de s'assurer, lors de l'acquisition d'une ressource, que celle-ci sera bien libérée en liant cette acquisition à la durée de vie d'un objet : la ressource est acquise durant l'initialisation de l'objet, il est alors impossible de l'utiliser tant que la ressource est indisponible et elle est libérée au moment de la destruction de l'objet, cette destruction étant garantie même en cas d'erreur.

En C++, les objets résidant sur la pile sont automatiquement détruits lors de la sortie de la portée. Y compris dans le cas d'une levée d'exception [2]; Leur destructeur est appelé avant que l'exception ne se propage.

La technique RAII aide à l'écriture de code plus résistant aux exceptions : pour libérer une ressource avant de permettre à l'exception de se propager, on peut écrire un destructeur approprié plutôt que de disséminer et multiplier les instructions de nettoyage entre les blocs de prise en compte des exceptions.

Langages supportant la technique RAII

Les langages C++ et D permettent l'allocation d'objets sur la pile et leurs règles de portée garantissent que lorsque la portée d'un objet s'achève, son destructeur est automatiquement appelé. En plaçant les instructions de libération des ressources dans le destructeur, les règles de portée du C++ et du langage D permettent l'utilisation de la technique RAII.

Cas d'utilisation

La Technique RAII est souvent utilisée pour contrôler les mutex des applications multithread. Dans ce cas, l'objet relâche le mutex, s'il l'avait obtenu, au moment de sa destruction. Un autre exemple type est celui de la gestion de fichier, où la classe fichier ferme le fichier associé, si celui-ci a pu être ouvert, au moment de sa destruction.

La gestion de la mémoire allouée dynamiquement (par exemple par l'utilisation de new en C++) peut être contrôlée par RAII, de telle sorte que la mémoire est libérée quand l'objet est détruit. Suivant cette logique, La librairie standard C++ définit la classe de pointeur intelligent std::auto_ptr. D'autres types de pointeurs basés sur une sémantique d'appartenance partagée comme les pointeurs boost::shared_ptr (définis dans la librairie C++ Boost et qui seront inclus dans le nouveau standard C++1x) peuvent être utilisés pour gérer la durée de vie des objets partagés.

Références

  1. (en) Bjarne Stroustrup, The Design and Evolution of C++, Reading, Addison-Wesley, 1994, 4e éd. (ISBN 978-0-201-54330-8) (LCCN 93050758) 
  2. (en) Bjarne Stroustrup, Exception Safety: Concepts and Techniques, avril 2001, PDF [lire en ligne (page consultée le 2007-09-02)] 

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article RAII de Wikipédia en français (auteurs)

Игры ⚽ Нужно сделать НИР?

Regardez d'autres dictionnaires:

  • RAII — Adquirir Recursos es Inicializar , a menudo referido por sus siglas en inglés RAII (de Resource Acquisition Is Initialization ), es un popular patrón de diseño en varios lenguajes de programación orientados a objetos como C++, y Ada. La técnica… …   Wikipedia Español

  • RAII — Ressourcenbelegung ist Initialisierung, meist abgekürzt durch RAII, für engl. resource acquisition is initialization, bezeichnet eine in der Programmiersprache C++ verbreitete Programmiertechnik, die die Steuerung der Belegung und Freigabe von… …   Deutsch Wikipedia

  • RAII — …   Википедия

  • RAII — noun Resource acquisition is initialization , a popular design pattern in object oriented programming that ties resources to the lifespan of associated objects to prevent resource leakage …   Wiktionary

  • Polygonum raii — ID 66516 Symbol Key PORA6 Common Name Ray s knotweed Family Polygonaceae Category Dicot Division Magnoliophyta US Nativity Native to U.S. US/NA Plant Yes State Distribution ME Growth Habit Forb/herb Duration …   USDA Plant Characteristics

  • Polygonum oxyspermum C.A. Mey. & Bunge ex Ledeb. ssp. raii (Bab.) Webb & Chater — Symbol PORA6 Synonym Symbol POOXR Botanical Family Polygonaceae …   Scientific plant list

  • Polygonum oxyspermum C.A. Mey. & Bunge ex Ledeb. ssp. raii (Bab.) Webb & Chater — Symbol PORA6 Synonym Symbol POOXR Botanical Family Polygonaceae …   Scientific plant list

  • Polygonum raii Bab. — Symbol PORA6 Common Name Ray s knotweed Botanical Family Polygonaceae …   Scientific plant list

  • Brama raii — noun deep bodied sooty black pelagic spiny finned fish of the northern Atlantic and northern Pacific; valued for food • Syn: ↑pomfret • Hypernyms: ↑sea bream, ↑bream • Member Holonyms: ↑Brama, ↑genus Brama …   Useful english dictionary

  • Resource Acquisition Is Initialization — Resource Acquisition Is Initialization, often referred to by the acronym RAII, is a popular design pattern in many object oriented languages like C++, D and Ada. The technique, invented by Bjarne Stroustrupcite book title = The Design and… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”