Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
MemoryPool.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 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/* MemoryPool.h (C) 2000-2024 */
9/* */
10/* Classe pour gérer une liste de zone allouées. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_UTILS_INTERNAL_MEMORYPOOL_H
13#define ARCANE_UTILS_INTERNAL_MEMORYPOOL_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19#include <memory>
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24namespace Arcane::impl
25{
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
38class ARCANE_UTILS_EXPORT IMemoryPoolAllocator
39{
40 public:
41
42 virtual ~IMemoryPoolAllocator() = default;
43
44 public:
45
47 virtual void* allocateMemory(size_t size) = 0;
49 virtual void freeMemory(void* address, size_t size) = 0;
50};
51
52/*---------------------------------------------------------------------------*/
53/*---------------------------------------------------------------------------*/
63class ARCANE_UTILS_EXPORT MemoryPool
65{
66 class Impl;
67
68 public:
69
70 explicit MemoryPool(IMemoryPoolAllocator* allocator, const String& name);
72
73 public:
74
75 void* allocateMemory(size_t size) override;
76 void freeMemory(void* ptr, size_t size) override;
77 void dumpStats(std::ostream& ostr);
78 void dumpFreeMap(std::ostream& ostr);
79 String name() const;
80
88 void setMaxCachedBlockSize(size_t v);
89
91 void freeCachedMemory();
92
93 private:
94
95 std::shared_ptr<Impl> m_p;
96};
97
98/*---------------------------------------------------------------------------*/
99/*---------------------------------------------------------------------------*/
100
101} // namespace Arcane::impl
102
103/*---------------------------------------------------------------------------*/
104/*---------------------------------------------------------------------------*/
105
106#endif
Fichier de configuration d'Arcane.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Interface d'un allocateur pour un MemoryPool.
Definition MemoryPool.h:39
virtual void * allocateMemory(size_t size)=0
Alloue un bloc pour size octets.
virtual void freeMemory(void *address, size_t size)=0
Libère le bloc situé à l'adresse address contenant size octets.
Classe pour gérer une liste de zone allouées.
Definition MemoryPool.h:65
Chaîne de caractères unicode.