mem_block_cache.hpp

来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 100 行

HPP
100
字号
 /* * Copyright (c) 2002 * John Maddock * * Use, modification and distribution are subject to the  * Boost Software License, Version 1.0. (See accompanying file  * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) * */ /*  *   LOCATION:    see http://www.boost.org for most recent version.  *   FILE         mem_block_cache.hpp  *   VERSION      see <boost/version.hpp>  *   DESCRIPTION: memory block cache used by the non-recursive matcher.  */#ifndef BOOST_REGEX_V4_MEM_BLOCK_CACHE_HPP#define BOOST_REGEX_V4_MEM_BLOCK_CACHE_HPP#include <new>#ifdef BOOST_HAS_THREADS#include <boost/regex/pending/static_mutex.hpp>#endif#ifdef BOOST_HAS_ABI_HEADERS#  include BOOST_ABI_PREFIX#endifnamespace boost{namespace re_detail{struct mem_block_node{   mem_block_node* next;};struct mem_block_cache{   // this member has to be statically initialsed:   mem_block_node* next;   unsigned cached_blocks;#ifdef BOOST_HAS_THREADS   boost::static_mutex mut;#endif   ~mem_block_cache()   {      while(next)      {         mem_block_node* old = next;         next = next->next;         ::operator delete(old);      }   }   void* get()   {#ifdef BOOST_HAS_THREADS      boost::static_mutex::scoped_lock g(mut);#endif     if(next)      {         mem_block_node* result = next;         next = next->next;         --cached_blocks;         return result;      }      return ::operator new(BOOST_REGEX_BLOCKSIZE);   }   void put(void* p)   {#ifdef BOOST_HAS_THREADS      boost::static_mutex::scoped_lock g(mut);#endif      if(cached_blocks >= BOOST_REGEX_MAX_CACHE_BLOCKS)      {         ::operator delete(p);      }      else      {         mem_block_node* old = static_cast<mem_block_node*>(p);         old->next = next;         next = old;         ++cached_blocks;      }   }};extern mem_block_cache block_cache;}} // namespace boost#ifdef BOOST_HAS_ABI_HEADERS#  include BOOST_ABI_SUFFIX#endif#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?