3 <meta http-equiv=
"Content-Type" content=
"text/html; charset=US-ASCII">
4 <title>Appendix F: Other Implementations
</title>
5 <link rel=
"stylesheet" href=
"../../../../../../doc/src/boostbook.css" type=
"text/css">
6 <meta name=
"generator" content=
"DocBook XSL Stylesheets V1.76.1">
7 <link rel=
"home" href=
"../../index.html" title=
"Boost.Pool">
8 <link rel=
"up" href=
"../appendices.html" title=
"Appendices">
9 <link rel=
"prev" href=
"tickets.html" title=
"Appendix E: Tickets">
10 <link rel=
"next" href=
"references.html" title=
"Appendix G: References">
12 <body bgcolor=
"white" text=
"black" link=
"#0000FF" vlink=
"#840084" alink=
"#0000FF">
13 <table cellpadding=
"2" width=
"100%"><tr>
14 <td valign=
"top"><img alt=
"Boost C++ Libraries" width=
"277" height=
"86" src=
"../../../../../../boost.png"></td>
15 <td align=
"center"><a href=
"../../../../../../index.html">Home
</a></td>
16 <td align=
"center"><a href=
"../../../../../../libs/libraries.htm">Libraries
</a></td>
17 <td align=
"center"><a href=
"http://www.boost.org/users/people.html">People
</a></td>
18 <td align=
"center"><a href=
"http://www.boost.org/users/faq.html">FAQ
</a></td>
19 <td align=
"center"><a href=
"../../../../../../more/index.htm">More
</a></td>
22 <div class=
"spirit-nav">
23 <a accesskey=
"p" href=
"tickets.html"><img src=
"../../../../../../doc/src/images/prev.png" alt=
"Prev"></a><a accesskey=
"u" href=
"../appendices.html"><img src=
"../../../../../../doc/src/images/up.png" alt=
"Up"></a><a accesskey=
"h" href=
"../../index.html"><img src=
"../../../../../../doc/src/images/home.png" alt=
"Home"></a><a accesskey=
"n" href=
"references.html"><img src=
"../../../../../../doc/src/images/next.png" alt=
"Next"></a>
26 <div class=
"titlepage"><div><div><h3 class=
"title">
27 <a name=
"boost_pool.appendices.implementations"></a><a class=
"link" href=
"implementations.html" title=
"Appendix F: Other Implementations">Appendix F: Other
29 </h3></div></div></div>
31 Pool allocators are found in many programming languages, and in many variations.
32 The beginnings of many implementations may be found in common programming
33 literature; some of these are given below. Note that none of these are complete
34 implementations of a Pool; most of these leave some aspects of a Pool as
35 a user exercise. However, in each case, even though some aspects are missing,
36 these examples use the same underlying concept of a Simple Segregated Storage
37 described in this document.
39 <div class=
"orderedlist"><ol class=
"orderedlist" type=
"1">
41 <span class=
"emphasis"><em>The C++ Programming Language
</em></span>,
3rd ed., by Bjarne
42 Stroustrup, Section
19.4.2. Missing aspects:
43 <div class=
"itemizedlist"><ul class=
"itemizedlist" type=
"disc">
48 Cannot handle allocations of arbitrary numbers of objects (this
49 was left as an exercise).
55 Suffers from the static initialization problem.
60 <span class=
"emphasis"><em>MicroC/OS-II: The Real-Time Kernel
</em></span>, by Jean J. Labrosse,
61 Chapter
7 and Appendix B
.04.
62 <div class=
"itemizedlist"><ul class=
"itemizedlist" type=
"disc">
64 An example of the Simple Segregated Storage scheme at work in the
65 internals of an actual OS.
71 Not portable (though this is OK, since it's part of its own OS).
74 Cannot handle allocations of arbitrary numbers of blocks (which
75 is also OK, since this feature is not needed).
78 Requires non-intuitive user code to create and destroy the Pool.
83 <span class=
"emphasis"><em>Efficient C++: Performance Programming Techniques
</em></span>,
84 by Dov Bulka and David Mayhew, Chapters
6 and
7.
85 <div class=
"itemizedlist"><ul class=
"itemizedlist" type=
"disc">
87 This is a good example of iteratively developing a Pool solutio.
90 however, their premise (that the system-supplied allocation mechanism
91 is hopelessly inefficient) is flawed on every system I've tested
95 Run their timings on your system before you accept their conclusions.
98 Missing aspect: Requires non-intuitive user code to create and
103 <li class=
"listitem">
104 <span class=
"emphasis"><em>Advanced C++: Programming Styles and Idioms
</em></span>, by
105 James O. Coplien, Section
3.6.
106 <div class=
"itemizedlist"><ul class=
"itemizedlist" type=
"disc">
107 <li class=
"listitem">
108 Has examples of both static and dynamic pooling, but missing aspects:
110 <li class=
"listitem">
113 <li class=
"listitem">
114 The static pooling example is not portable.
120 <table xmlns:
rev=
"http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width=
"100%"><tr>
121 <td align=
"left"></td>
122 <td align=
"right"><div class=
"copyright-footer">Copyright
© 2000-
2006 Stephen Cleary
<br>Copyright
© 2011 Paul A. Bristow
<p>
123 Distributed under the Boost Software License, Version
1.0. (See accompanying
124 file LICENSE_1_0.txt or copy at
<a href=
"http://www.boost.org/LICENSE_1_0.txt" target=
"_top">http://www.boost.org/LICENSE_1_0.txt
</a>)
129 <div class=
"spirit-nav">
130 <a accesskey=
"p" href=
"tickets.html"><img src=
"../../../../../../doc/src/images/prev.png" alt=
"Prev"></a><a accesskey=
"u" href=
"../appendices.html"><img src=
"../../../../../../doc/src/images/up.png" alt=
"Up"></a><a accesskey=
"h" href=
"../../index.html"><img src=
"../../../../../../doc/src/images/home.png" alt=
"Home"></a><a accesskey=
"n" href=
"references.html"><img src=
"../../../../../../doc/src/images/next.png" alt=
"Next"></a>