Browse Source

memory pools: Remove std::call_once.

lganzzzo 3 years ago
parent
commit
8a5ad5c88b

+ 2 - 1
.gitignore

@@ -46,8 +46,9 @@ srt/build/
 test/build/
 
 # Docker
-
 Dockerfile
+docker-compose.yaml
+docker-compose.yml
 
 # VS
 .vs/

+ 1 - 1
src/oatpp/codegen/ApiClient_define.hpp

@@ -305,4 +305,4 @@ static void Z_ADD_HEADERS_##NAME(oatpp::web::client::ApiClient::Headers& headers
   Z_ADD_DEFAULT_HEADERS_##NAME(headers); \
 } \
 \
-static void Z_ADD_DEFAULT_HEADERS_##NAME(oatpp::web::client::ApiClient::Headers& headers)
+static void Z_ADD_DEFAULT_HEADERS_##NAME(oatpp::web::client::ApiClient::Headers& headers)

+ 2 - 6
src/oatpp/core/base/StrBuffer.hpp

@@ -40,12 +40,8 @@ private:
 
   static constexpr v_buff_size SM_STRING_POOL_ENTRY_SIZE = 256;
   
-  static oatpp::base::memory::ThreadDistributedMemoryPool& getSmallStringPool() {
-    static std::once_flag flag;
-    static oatpp::base::memory::ThreadDistributedMemoryPool *pool = nullptr;
-    std::call_once(flag, []() {
-      pool = new oatpp::base::memory::ThreadDistributedMemoryPool("Small_String_Pool", SM_STRING_POOL_ENTRY_SIZE, 16);
-    });
+  static memory::ThreadDistributedMemoryPool& getSmallStringPool() {
+    static auto pool = new memory::ThreadDistributedMemoryPool("Small_String_Pool", SM_STRING_POOL_ENTRY_SIZE, 16);
     return *pool;
   }
   

+ 3 - 11
src/oatpp/core/base/memory/Allocator.hpp

@@ -66,12 +66,8 @@ public:
 public:
   const AllocatorPoolInfo& m_poolInfo;
 public:
-  static oatpp::base::memory::ThreadDistributedMemoryPool& getPool(const AllocatorPoolInfo& info){
-    static std::once_flag flag;
-    static oatpp::base::memory::ThreadDistributedMemoryPool *pool = nullptr;
-    std::call_once(flag, [&]() {
-      pool = new oatpp::base::memory::ThreadDistributedMemoryPool(info.poolName, sizeof(T), info.poolChunkSize);
-    });
+  static ThreadDistributedMemoryPool& getPool(const AllocatorPoolInfo& info){
+    static auto pool = new ThreadDistributedMemoryPool(info.poolName, sizeof(T), info.poolChunkSize);
     return *pool;
   }
 public:
@@ -123,11 +119,7 @@ public:
     static thread_local oatpp::base::memory::MemoryPool pool(info.poolName, sizeof(T), info.poolChunkSize);
     return pool;
 #else
-    static std::once_flag flag;
-    static oatpp::base::memory::MemoryPool *pool = nullptr;
-    std::call_once(flag, [&]() {
-      pool = new oatpp::base::memory::MemoryPool(info.poolName, sizeof(T), info.poolChunkSize);
-    });
+    static auto pool = new MemoryPool(info.poolName, sizeof(T), info.poolChunkSize);
     return *pool;
 #endif
   }

+ 2 - 10
src/oatpp/core/base/memory/ObjectPool.hpp

@@ -103,11 +103,7 @@ class POOL_NAME { \
 public: \
 \
   static oatpp::base::memory::ThreadDistributedMemoryPool& getPool(){ \
-    static std::once_flag flag; \
-    static oatpp::base::memory::ThreadDistributedMemoryPool *pool = nullptr; \
-    std::call_once(flag, []() { \
-      pool = new oatpp::base::memory::ThreadDistributedMemoryPool(#POOL_NAME"<"#TYPE">", sizeof(TYPE), CHUNK_SIZE); \
-    }); \
+    static auto pool = new oatpp::base::memory::ThreadDistributedMemoryPool(#POOL_NAME"<"#TYPE">", sizeof(TYPE), CHUNK_SIZE); \
     return *pool; \
   } \
 \
@@ -193,11 +189,7 @@ static void operator delete(void* ptr, void* entry) { \
   public: \
   \
     static oatpp::base::memory::MemoryPool& getPool(){ \
-      static std::once_flag flag; \
-      static oatpp::base::memory::MemoryPool *pool = nullptr; \
-      std::call_once(flag, []() { \
-        pool = new oatpp::base::memory::MemoryPool(#POOL_NAME"<"#TYPE">", sizeof(TYPE), CHUNK_SIZE); \
-      }); \
+      static auto pool = new oatpp::base::memory::MemoryPool(#POOL_NAME"<"#TYPE">", sizeof(TYPE), CHUNK_SIZE); \
       return *pool; \
     } \
   \

+ 2 - 6
src/oatpp/core/data/buffer/IOBuffer.hpp

@@ -44,12 +44,8 @@ public:
    */
   static constexpr v_buff_size BUFFER_SIZE = 4096;
 private:
-  static oatpp::base::memory::ThreadDistributedMemoryPool& getBufferPool(){
-    static std::once_flag flag;
-    static oatpp::base::memory::ThreadDistributedMemoryPool *pool = nullptr;
-    std::call_once(flag, []() {
-      pool = new oatpp::base::memory::ThreadDistributedMemoryPool("IOBuffer_Buffer_Pool", BUFFER_SIZE, 16);
-    });
+  static oatpp::base::memory::ThreadDistributedMemoryPool& getBufferPool() {
+    static auto pool = new oatpp::base::memory::ThreadDistributedMemoryPool("IOBuffer_Buffer_Pool", BUFFER_SIZE, 16);
     return *pool;
   }
 private:

+ 2 - 6
src/oatpp/core/data/stream/ChunkedBuffer.hpp

@@ -51,12 +51,8 @@ public:
   static const v_buff_size CHUNK_ENTRY_SIZE;
   static const v_buff_size CHUNK_CHUNK_SIZE;
 
-  static oatpp::base::memory::ThreadDistributedMemoryPool& getSegemntPool(){
-    static std::once_flag flag;
-    static oatpp::base::memory::ThreadDistributedMemoryPool *pool = nullptr;
-    std::call_once(flag, []() {
-      pool = new oatpp::base::memory::ThreadDistributedMemoryPool(CHUNK_POOL_NAME, CHUNK_ENTRY_SIZE, CHUNK_CHUNK_SIZE);
-    });
+  static oatpp::base::memory::ThreadDistributedMemoryPool& getSegemntPool() {
+    static auto pool = new oatpp::base::memory::ThreadDistributedMemoryPool(CHUNK_POOL_NAME, CHUNK_ENTRY_SIZE, CHUNK_CHUNK_SIZE);
     return *pool;
   }