a00539.html

来自「opendds 1.2 最新版 面向分布式实时网络编程」· HTML 代码 · 共 470 行 · 第 1/2 页

HTML
470 行
字号
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>OpenDDS: OpenDDS::DCPS::Dynamic_Cached_Allocator_With_Overflow&lt; ACE_LOCK &gt; Class Template Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
    <li id="current"><a href="classes.html"><span>Classes</span></a></li>
    <li><a href="files.html"><span>Files</span></a></li>
    <li><a href="dirs.html"><span>Directories</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
    <li>
      <form action="search.php" method="get">
        <table cellspacing="0" cellpadding="0" border="0">
          <tr>
            <td><label>&nbsp;<u>S</u>earch&nbsp;for&nbsp;</label></td>
            <td><input type="text" name="query" value="" size="20" accesskey="s"/></td>
          </tr>
        </table>
      </form>
    </li>
  </ul></div>
<div class="tabs">
  <ul>
    <li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
    <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
    <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
    <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
  </ul></div>
<div class="nav">
<a class="el" href="a01301.html">OpenDDS</a>::<a class="el" href="a01275.html">DCPS</a>::<a class="el" href="a00539.html">Dynamic_Cached_Allocator_With_Overflow</a></div>
<h1>OpenDDS::DCPS::Dynamic_Cached_Allocator_With_Overflow&lt; ACE_LOCK &gt; Class Template Reference</h1><!-- doxytag: class="OpenDDS::DCPS::Dynamic_Cached_Allocator_With_Overflow" -->A size-based allocator that caches blocks for quicker access, but if the pool is exhausted it will use the heap.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;Dynamic_Cached_Allocator_With_Overflow_T.h&gt;</code>
<p>
<a href="a00029.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00539.html#2e273a5484cead6c839d9c649fd62c2c">Dynamic_Cached_Allocator_With_Overflow</a> (size_t n_chunks, size_t chunk_size)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00539.html#8858b0f18ffccf647d8dbcd7e9ebb235">~Dynamic_Cached_Allocator_With_Overflow</a> (void)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear things up.  <a href="#8858b0f18ffccf647d8dbcd7e9ebb235"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00539.html#11cd9c15d583543b6a017a878b9b7746">malloc</a> (size_t nbytes=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00539.html#6f48c0a0cfaa9e60f097186a7e64544d">calloc</a> (size_t, char= '\0')</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00539.html#1d0cdc728e90543875d42f8accec27f3">calloc</a> (size_t, size_t, char= '\0')</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00539.html#32b1fafe848146c9953dd0a59a7588dc">free</a> (void *ptr)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return a chunk of memory back to free list cache.  <a href="#32b1fafe848146c9953dd0a59a7588dc"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00539.html#acb5f48e3adf89f2d90c97c833fdcb6c">pool_depth</a> (void)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the number of chunks available in the cache.  <a href="#acb5f48e3adf89f2d90c97c833fdcb6c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00539.html#e53b1f91295ce0738fce96d4d009d8db">available</a> ()</td></tr>

<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">u_long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00539.html#a3a93abb94127d34b875e418b906ca6b">allocs_from_heap_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">number of allocations from the heap.  <a href="#a3a93abb94127d34b875e418b906ca6b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">u_long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00539.html#b986a56e3377e23dcc0f80662fc3ffcb">allocs_from_pool_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">number of allocations from the pool.  <a href="#b986a56e3377e23dcc0f80662fc3ffcb"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">u_long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00539.html#94278006dcd9810ad8c84c5da1609cdc">frees_to_heap_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">number of frees returned to the heap  <a href="#94278006dcd9810ad8c84c5da1609cdc"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">u_long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00539.html#f8e4c56d445233a8f5a7d977218ef836">frees_to_pool_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">number of frees returned to the pool  <a href="#f8e4c56d445233a8f5a7d977218ef836"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00539.html#0726b06150872763df70d8beb1e0f8cc">pool_</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00539.html#843226caa913a3b7719cd3b117fa6137">last_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the pool.  <a href="#843226caa913a3b7719cd3b117fa6137"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_Locked_Free_List&lt; ACE_Cached_Mem_Pool_Node&lt;<br>
 char &gt;, ACE_LOCK &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00539.html#e531de9fd9bf064bb564c80ba9d4a3dc">free_list_</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00539.html#d5aa380b9971b8f5e6b2210f96b4ee95">chunk_size_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remember the size of our chunks.  <a href="#d5aa380b9971b8f5e6b2210f96b4ee95"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<h3>template&lt;class ACE_LOCK&gt;<br>
 class OpenDDS::DCPS::Dynamic_Cached_Allocator_With_Overflow&lt; ACE_LOCK &gt;</h3>

A size-based allocator that caches blocks for quicker access, but if the pool is exhausted it will use the heap. 
<p>
This class enables caching of dynamically allocated, fixed-size chunks. Notice that the <code>chunk_size</code> must be greater than or equal to <code> sizeof (void*) </code> for this to work properly.<p>
This class can be configured flexibly with different types of ACE_LOCK strategies that support the <em>ACE_Thread_Mutex</em> and <em>ACE_Process_Mutex</em> constructor API. 
<p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="2e273a5484cead6c839d9c649fd62c2c"></a><!-- doxytag: member="OpenDDS::DCPS::Dynamic_Cached_Allocator_With_Overflow::Dynamic_Cached_Allocator_With_Overflow" ref="2e273a5484cead6c839d9c649fd62c2c" args="(size_t n_chunks, size_t chunk_size)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class ACE_LOCK&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00539.html">OpenDDS::DCPS::Dynamic_Cached_Allocator_With_Overflow</a>&lt; ACE_LOCK &gt;::<a class="el" href="a00539.html">Dynamic_Cached_Allocator_With_Overflow</a>           </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>n_chunks</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>chunk_size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create a cached memory pool with <em>n_chunks</em> chunks each with <em>chunk_size</em> size. 
</div>
</div><p>
<a class="anchor" name="8858b0f18ffccf647d8dbcd7e9ebb235"></a><!-- doxytag: member="OpenDDS::DCPS::Dynamic_Cached_Allocator_With_Overflow::~Dynamic_Cached_Allocator_With_Overflow" ref="8858b0f18ffccf647d8dbcd7e9ebb235" args="(void)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class ACE_LOCK&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00539.html">OpenDDS::DCPS::Dynamic_Cached_Allocator_With_Overflow</a>&lt; ACE_LOCK &gt;::~<a class="el" href="a00539.html">Dynamic_Cached_Allocator_With_Overflow</a>           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Clear things up. 
<p>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="e53b1f91295ce0738fce96d4d009d8db"></a><!-- doxytag: member="OpenDDS::DCPS::Dynamic_Cached_Allocator_With_Overflow::available" ref="e53b1f91295ce0738fce96d4d009d8db" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class ACE_LOCK&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">size_t <a class="el" href="a00539.html">OpenDDS::DCPS::Dynamic_Cached_Allocator_With_Overflow</a>&lt; ACE_LOCK &gt;::available           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
How many chunks are available at this time. 
</div>
</div><p>
<a class="anchor" name="1d0cdc728e90543875d42f8accec27f3"></a><!-- doxytag: member="OpenDDS::DCPS::Dynamic_Cached_Allocator_With_Overflow::calloc" ref="1d0cdc728e90543875d42f8accec27f3" args="(size_t, size_t, char= '\0')" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class ACE_LOCK&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">virtual void* <a class="el" href="a00539.html">OpenDDS::DCPS::Dynamic_Cached_Allocator_With_Overflow</a>&lt; ACE_LOCK &gt;::calloc           </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&nbsp;</td>
          <td class="paramname"> = <code>'\0'</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This method is a no-op and just returns 0 since the free list only works with fixed sized entities. 
</div>
</div><p>
<a class="anchor" name="6f48c0a0cfaa9e60f097186a7e64544d"></a><!-- doxytag: member="OpenDDS::DCPS::Dynamic_Cached_Allocator_With_Overflow::calloc" ref="6f48c0a0cfaa9e60f097186a7e64544d" args="(size_t, char= '\0')" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class ACE_LOCK&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">virtual void* <a class="el" href="a00539.html">OpenDDS::DCPS::Dynamic_Cached_Allocator_With_Overflow</a>&lt; ACE_LOCK &gt;::calloc           </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&nbsp;</td>
          <td class="paramname"> = <code>'\0'</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [inline, virtual]</code></td>
        </tr>

⌨️ 快捷键说明

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