123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0.1 Transitional//EN">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Boost.Flyweight Documentation - Future work</title>
- <link rel="stylesheet" href="style.css" type="text/css">
- <link rel="start" href="examples.html">
- <link rel="prev" href="tests.html">
- <link rel="up" href="index.html">
- <link rel="next" href="release_notes.html">
- </head>
- <body>
- <h1><img src="../../../boost.png" alt="Boost logo" align=
- "middle" width="277" height="86">Boost.Flyweight Future work</h1>
- <div class="prev_link"><a href="tests.html"><img src="prev.gif" alt="examples" border="0"><br>
- Tests
- </a></div>
- <div class="up_link"><a href="index.html"><img src="up.gif" alt="index" border="0"><br>
- Index
- </a></div>
- <div class="next_link"><a href="release_notes.html"><img src="next.gif" alt="release notes" border="0"><br>
- Release notes
- </a></div><br clear="all" style="clear: all;">
- <br clear="all" style="clear: all;">
- <hr>
- <p>
- New functionalities can be included into future releases of Boost.Flyweight
- to meet the demands of users and to leverage upcoming C++ features
- and new Boost libraries. The following is a list of candidate additions.
- </p>
- <h2>Contents</h2>
- <ul>
- <li><a href="#instrospection">Introspection API</a></li>
- <li><a href="#rw_lock">Read/write locking policy</a></li>
- <li><a href="#new_boost_libs">Integration with new Boost libraries</a></li>
- </ul>
- <h2><a name="instrospection">Introspection API</a></h2>
- <p>
- Currently there is no way to access the internal components of a
- <code>flyweight</code> instantiation (factory, holder, etc.) or even
- to know the types of these components. With such an API it would be
- possible to instrument and monitor the usage of Boost.Flyweight like in
- the following example:
- </p>
- <blockquote><pre>
- <span class=keyword>typedef</span> <span class=identifier>flyweight</span><span class=special><</span><span class=identifier>std</span><span class=special>::</span><span class=identifier>string</span><span class=special>></span> <span class=identifier>fw_type</span><span class=special>;</span>
- <span class=special>...</span>
- <span class=identifier>std</span><span class=special>::</span><span class=identifier>cout</span><span class=special><<</span><span class=string>"factory used: "</span><span class=special><<</span><span class=keyword>typeid</span><span class=special>(</span><span class=identifier>fw_type</span><span class=special>::</span><span class=identifier>factory_type</span><span class=special>).</span><span class=identifier>name</span><span class=special>()<<</span><span class=identifier>std</span><span class=special>::</span><span class=identifier>endl</span><span class=special>;</span>
- <span class=identifier>std</span><span class=special>::</span><span class=identifier>cout</span><span class=special><<</span><span class=string>"values stored: "</span><span class=special><<</span><span class=identifier>fw_type</span><span class=special>::</span><span class=identifier>factory</span><span class=special>().</span><span class=identifier>size</span><span class=special>()<<</span><span class=identifier>std</span><span class=special>::</span><span class=identifier>endl</span><span class=special>;</span>
- </pre></blockquote>
- <h2><a name="rw_lock">Read/write locking policy</a></h2>
- <p>
- The nature of the flyweight pattern implies that most accesses
- to the internal flyweight factory do not cause new insertions and can
- thus be considered read-only. This hints at the convenience of using
- a locking policy based on read/write locks such as those provided by
- <a href="../../../doc/html/thread/synchronization.html#thread.synchronization.mutex_concepts.shared_lockable">Boost.Thread</a>.
- Implementing a locking policy will also require extending the
- <a href="reference/factories.html#factory"><code>Factory</code></a> concept
- to allow for pure lookup operations. Tim Blechmann has provided a
- preliminary <a href="http://lists.boost.org/Archives/boost/2008/07/139414.php">implementation</a>
- of this idea. Before committing to this library extension it is
- necessary to do a profiling study to determine whether read/write
- locking actually improves performance.
- </p>
- <h2><a name="new_boost_libs">Integration with new Boost libraries</a></h2>
- <p>
- Recently accepted Boost libraries like
- <a href="http://lists.boost.org/boost-announce/2007/12/0149.php">Boost.Functional/Forward</a>
- and <a href="http://lists.boost.org/boost-announce/2007/12/0157.php">Boost.Functional/Factory</a>
- might be used in the future to replace some internal machinery of
- Boost.Flyweight.
- </p>
- <hr>
- <div class="prev_link"><a href="tests.html"><img src="prev.gif" alt="examples" border="0"><br>
- Tests
- </a></div>
- <div class="up_link"><a href="index.html"><img src="up.gif" alt="index" border="0"><br>
- Index
- </a></div>
- <div class="next_link"><a href="release_notes.html"><img src="next.gif" alt="release notes" border="0"><br>
- Release notes
- </a></div><br clear="all" style="clear: all;">
- <br clear="all" style="clear: all;">
- <br>
- <p>Revised April 24th 2019</p>
- <p>© Copyright 2006-2019 Joaquín M López Muñoz.
- 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>)
- </p>
- </body>
- </html>
|