aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/poco/Foundation/include/Poco/MemoryPool.h
diff options
context:
space:
mode:
authororivej <orivej@yandex-team.ru>2022-02-10 16:45:01 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:45:01 +0300
commit2d37894b1b037cf24231090eda8589bbb44fb6fc (patch)
treebe835aa92c6248212e705f25388ebafcf84bc7a1 /contrib/libs/poco/Foundation/include/Poco/MemoryPool.h
parent718c552901d703c502ccbefdfc3c9028d608b947 (diff)
downloadydb-2d37894b1b037cf24231090eda8589bbb44fb6fc.tar.gz
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/poco/Foundation/include/Poco/MemoryPool.h')
-rw-r--r--contrib/libs/poco/Foundation/include/Poco/MemoryPool.h230
1 files changed, 115 insertions, 115 deletions
diff --git a/contrib/libs/poco/Foundation/include/Poco/MemoryPool.h b/contrib/libs/poco/Foundation/include/Poco/MemoryPool.h
index 4af7f131f6..55f238d991 100644
--- a/contrib/libs/poco/Foundation/include/Poco/MemoryPool.h
+++ b/contrib/libs/poco/Foundation/include/Poco/MemoryPool.h
@@ -1,115 +1,115 @@
-//
-// MemoryPool.h
-//
-// Library: Foundation
-// Package: Core
-// Module: MemoryPool
-//
-// Definition of the MemoryPool class.
-//
-// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#ifndef Foundation_MemoryPool_INCLUDED
-#define Foundation_MemoryPool_INCLUDED
-
-
-#include "Poco/Foundation.h"
-#include "Poco/Mutex.h"
-#include <vector>
-#include <cstddef>
-
-
-namespace Poco {
-
-
-class Foundation_API MemoryPool
- /// A simple pool for fixed-size memory blocks.
- ///
- /// The main purpose of this class is to speed-up
- /// memory allocations, as well as to reduce memory
- /// fragmentation in situations where the same blocks
- /// are allocated all over again, such as in server
- /// applications.
- ///
- /// All allocated blocks are retained for future use.
- /// A limit on the number of blocks can be specified.
- /// Blocks can be preallocated.
-{
-public:
- MemoryPool(std::size_t blockSize, int preAlloc = 0, int maxAlloc = 0);
- /// Creates a MemoryPool for blocks with the given blockSize.
- /// The number of blocks given in preAlloc are preallocated.
-
- ~MemoryPool();
-
- void* get();
- /// Returns a memory block. If there are no more blocks
- /// in the pool, a new block will be allocated.
- ///
- /// If maxAlloc blocks are already allocated, an
- /// OutOfMemoryException is thrown.
-
- void release(void* ptr);
- /// Releases a memory block and returns it to the pool.
-
- std::size_t blockSize() const;
- /// Returns the block size.
-
- int allocated() const;
- /// Returns the number of allocated blocks.
-
- int available() const;
- /// Returns the number of available blocks in the pool.
-
-private:
- MemoryPool();
- MemoryPool(const MemoryPool&);
- MemoryPool& operator = (const MemoryPool&);
-
- void clear();
-
- enum
- {
- BLOCK_RESERVE = 128
- };
-
- typedef std::vector<char*> BlockVec;
-
- std::size_t _blockSize;
- int _maxAlloc;
- int _allocated;
- BlockVec _blocks;
- FastMutex _mutex;
-};
-
-
-//
-// inlines
-//
-inline std::size_t MemoryPool::blockSize() const
-{
- return _blockSize;
-}
-
-
-inline int MemoryPool::allocated() const
-{
- return _allocated;
-}
-
-
-inline int MemoryPool::available() const
-{
- return (int) _blocks.size();
-}
-
-
-} // namespace Poco
-
-
-#endif // Foundation_MemoryPool_INCLUDED
+//
+// MemoryPool.h
+//
+// Library: Foundation
+// Package: Core
+// Module: MemoryPool
+//
+// Definition of the MemoryPool class.
+//
+// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#ifndef Foundation_MemoryPool_INCLUDED
+#define Foundation_MemoryPool_INCLUDED
+
+
+#include "Poco/Foundation.h"
+#include "Poco/Mutex.h"
+#include <vector>
+#include <cstddef>
+
+
+namespace Poco {
+
+
+class Foundation_API MemoryPool
+ /// A simple pool for fixed-size memory blocks.
+ ///
+ /// The main purpose of this class is to speed-up
+ /// memory allocations, as well as to reduce memory
+ /// fragmentation in situations where the same blocks
+ /// are allocated all over again, such as in server
+ /// applications.
+ ///
+ /// All allocated blocks are retained for future use.
+ /// A limit on the number of blocks can be specified.
+ /// Blocks can be preallocated.
+{
+public:
+ MemoryPool(std::size_t blockSize, int preAlloc = 0, int maxAlloc = 0);
+ /// Creates a MemoryPool for blocks with the given blockSize.
+ /// The number of blocks given in preAlloc are preallocated.
+
+ ~MemoryPool();
+
+ void* get();
+ /// Returns a memory block. If there are no more blocks
+ /// in the pool, a new block will be allocated.
+ ///
+ /// If maxAlloc blocks are already allocated, an
+ /// OutOfMemoryException is thrown.
+
+ void release(void* ptr);
+ /// Releases a memory block and returns it to the pool.
+
+ std::size_t blockSize() const;
+ /// Returns the block size.
+
+ int allocated() const;
+ /// Returns the number of allocated blocks.
+
+ int available() const;
+ /// Returns the number of available blocks in the pool.
+
+private:
+ MemoryPool();
+ MemoryPool(const MemoryPool&);
+ MemoryPool& operator = (const MemoryPool&);
+
+ void clear();
+
+ enum
+ {
+ BLOCK_RESERVE = 128
+ };
+
+ typedef std::vector<char*> BlockVec;
+
+ std::size_t _blockSize;
+ int _maxAlloc;
+ int _allocated;
+ BlockVec _blocks;
+ FastMutex _mutex;
+};
+
+
+//
+// inlines
+//
+inline std::size_t MemoryPool::blockSize() const
+{
+ return _blockSize;
+}
+
+
+inline int MemoryPool::allocated() const
+{
+ return _allocated;
+}
+
+
+inline int MemoryPool::available() const
+{
+ return (int) _blocks.size();
+}
+
+
+} // namespace Poco
+
+
+#endif // Foundation_MemoryPool_INCLUDED