<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
  <meta http-equiv="Content-Language" content="en-us">
  <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
  <link href="../pool.css" rel="stylesheet" type="text/css">

  <title>Singleton Pool Implementation</title>
</head>

<body>
  <img src="../../../../boost.png" width="276" height="86" alt="C++ Boost">

  <h1 align="center">Singleton Pool Implementation</h1>

  <h2>Dependencies</h2>

  <p>Includes the Boost headers <span class="code">"pool.hpp"</span> (see
  <a href="pool.html">pool.html</a>), <span class=
  "code">"detail/singleton.hpp"</span> (see <a href=
  "singleton.html">singleton.html</a>), <span class=
  "code">"detail/mutex.hpp"</span> (see <a href="mutex.html">mutex.html</a>),
  and <span class="code">"detail/guard.hpp"</span> (see <a href=
  "guard.html">guard.html</a>).</p>

  <h2>Synopsis</h2>
  <pre class="code">
template &lt;typename Tag,
    unsigned RequestedSize,
    typename UserAllocator = default_user_allocator_new_delete,
    typename Mutex = details::pool::default_mutex,
    unsigned NextSize = 32&gt;
class singleton_pool
{
  ... // public interface

  public: // extensions to public interface
    typedef Mutex mutex;
    static const unsigned next_size = NextSize;
};
</pre>

  <h2>Extensions to Public Interface</h2>

  <h3>Additional template parameters</h3>

  <h4 class="code">Mutex</h4>

  <p>This class is the type of <a href="mutex.html">mutex</a> to use to
  protect simultaneous access to the underlying Pool. It is exposed so that
  users may declare some singleton pools normally (i.e., with
  synchronization), but some singleton pools without synchronization (by
  specifying <span class="code">details::pool::null_mutex</span>) for
  efficiency reasons.</p>

  <h4 class="code">NextSize</h4>

  <p>The value of this parameter is passed to the underlying Pool when it is
  created. See the extensions to the public interface of <a href=
  "pool.html">pool</a> for more information.</p>

  <h3>Additional members</h3>

  <p>The typedef <span class="code">mutex</span> and the static const value
  <span class="code">next_size</span> publish the values of the template
  parameters <span class="code">Mutex</span> and <span class=
  "code">NextSize</span>, respectively.</p>

  <h2>Future Directions</h2>

  <p>When the Boost multithreading library is completed, the <span class=
  "code">Mutex</span> parameter will be replaced by something from that
  library providing the same flexibility and will move from an implementation
  detail into the interface specification.</p>

  <h2><a href="../interfaces/singleton_pool.html">Interface
  Description</a></h2>
  <hr>

  <p><a href="http://validator.w3.org/check?uri=referer"><img border="0" src=
  "../../../../doc/images/valid-html401.png" alt="Valid HTML 4.01 Transitional"
  height="31" width="88"></a></p>

  <p>Revised 
  <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->05
  December, 2006<!--webbot bot="Timestamp" endspan i-checksum="38516" --></p>

  <p><i>Copyright &copy; 2000, 2001 Stephen Cleary (scleary AT jerviswebb DOT
  com)</i></p>

  <p><i>Distributed under the Boost Software License, Version 1.0. (See
  accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
  or copy at <a href=
  "http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)</i></p>
</body>
</html>
