Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
SharedReference.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* SharedReference.h (C) 2000-2022 */
9/* */
10/* Classe de base d'un compteur de référence. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_SHAREDREFERENCE_H
13#define ARCANE_SHAREDREFERENCE_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/ISharedReference.h"
18
19#include <atomic>
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24namespace Arcane
25{
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29/*!
30 * \ingroup Core
31 * \brief Implémentation d'un compteur de référence utilisant std::atomic.
32 */
33class ARCANE_CORE_EXPORT SharedReference
34: public ISharedReference
35{
36 public:
37
38 SharedReference() : m_ref_count(0) {}
39
40 public:
41
42 void addRef() override;
43 void removeRef() override;
44 Int32 refCount() const override { return m_ref_count; }
45
46 //! Détruit l'objet référencé
47 virtual void deleteMe() =0;
48
49 private:
50
51 std::atomic<Int32> m_ref_count; //!< Nombre de références sur l'objet.
52};
53
54/*---------------------------------------------------------------------------*/
55/*---------------------------------------------------------------------------*/
56
57} // End namespace Arcane
58
59/*---------------------------------------------------------------------------*/
60/*---------------------------------------------------------------------------*/
61
62#endif
63
Interface d'un compteur de référence.
Implémentation d'un compteur de référence utilisant std::atomic.
virtual void deleteMe()=0
Détruit l'objet référencé
Int32 refCount() const override
Retourne la valeur du compteur de référence.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-