2
0
mirror of https://github.com/boostorg/website.git synced 2026-01-28 19:52:14 +00:00

Added Boost.Thread news.

[SVN r43648]
This commit is contained in:
John Maddock
2008-03-16 09:48:43 +00:00
parent f220216b40
commit 2d7e2f0aae
3 changed files with 223 additions and 3 deletions

View File

@@ -14,7 +14,7 @@
<h3><span class="link">New Libraries</span></h3>
<ul>
<li>
<span class="library"><a href="/libs/asio/index.html">ASIO</a>:</span> Portable networking,
<span class="library"><a href="/libs/asio/index.html">Asio</a>:</span> Portable networking,
including sockets, timers, hostname resolution and socket iostreams, from
Chris Kohlhoff.
</li>
@@ -99,6 +99,79 @@
</li>
</ul>
</li>
<li>
<span class="library"><a href="/libs/thread/index.html">Thread</a>:</span>
<ul>
<li>
Instances of boost::thread and of the various lock types are now movable.
</li>
<li>
Threads can be interrupted at interruption points.
</li>
<li>
Condition variables can now be used with any type that implements the
Lockable concept, through the use of <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">condition_variable_any</span></code>
(<code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">condition</span></code> is a typedef to <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">condition_variable_any</span></code>, provided for
backwards compatibility). <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">condition_variable</span></code>
is provided as an optimization, and will only work with <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">unique_lock</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span><span class="special">></span></code>
(<code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span><span class="special">::</span><span class="identifier">scoped_lock</span></code>).
</li>
<li>
Thread IDs are separated from boost::thread, so a thread can obtain it's
own ID (using <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">this_thread</span><span class="special">::</span><span class="identifier">get_id</span><span class="special">()</span></code>),
and IDs can be used as keys in associative containers, as they have the
full set of comparison operators.
</li>
<li>
Timeouts are now implemented using the Boost DateTime library, through
a typedef <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">system_time</span></code> for absolute timeouts,
and with support for relative timeouts in many cases. <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">xtime</span></code>
is supported for backwards compatibility only.
</li>
<li>
Locks are implemented as publicly accessible templates <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lock_guard</span></code>, <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">unique_lock</span></code>,
<code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_lock</span></code>, and <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">upgrade_lock</span></code>,
which are templated on the type of the mutex. The Lockable concept has
been extended to include publicly available <code><span class="identifier">lock</span><span class="special">()</span></code> and <code><span class="identifier">unlock</span><span class="special">()</span></code> member functions, which are used by
the lock types.
</li>
<li>
<code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">try_mutex</span></code> has been removed, and the
functionality subsumed into <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span></code>.
<code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">try_mutex</span></code> is left as a typedef, but
is no longer a separate class.
</li>
<li>
<code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">recursive_try_mutex</span></code> has been removed,
and the functionality subsumed into <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">recursive_mutex</span></code>.
<code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">recursive_try_mutex</span></code> is left as a typedef,
but is no longer a separate class.
</li>
<li>
<code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">lock_ops</span></code> has been removed. Code that
relies on the <code><span class="identifier">lock_ops</span></code>
implementation detail will no longer work, as this has been removed,
as it is no longer necessary now that mutex types now have public <code><span class="identifier">lock</span><span class="special">()</span></code>
and <code><span class="identifier">unlock</span><span class="special">()</span></code>
member functions.
</li>
<li>
<code><span class="identifier">scoped_lock</span></code> constructors
with a second parameter of type bool are no longer provided. With previous
boost releases, <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span><span class="special">::</span><span class="identifier">scoped_lock</span>
<span class="identifier">some_lock</span><span class="special">(</span><span class="identifier">some_mutex</span><span class="special">,</span><span class="keyword">false</span><span class="special">);</span></code>
could be used to create a lock object that was associated with a mutex,
but did not lock it on construction. This facility has now been replaced
with the constructor that takes a <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">defer_lock_type</span></code>
as the second parameter: <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span><span class="special">::</span><span class="identifier">scoped_lock</span>
<span class="identifier">some_lock</span><span class="special">(</span><span class="identifier">some_mutex</span><span class="special">,</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">defer_lock</span><span class="special">);</span></code>
</li>
<li>
The broken <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">read_write_mutex</span></code> has been replaced
with <code><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_mutex</span></code>.
</li>
</ul>
</li>
<li>
<span class="library"><a href="/libs/wave/index.html">Wave</a>:</span> Standards conformant
implementation of the mandated C99/C++ preprocessor functionality packed
@@ -159,6 +232,23 @@
</li>
</ul>
</li>
<li>
<span class="library"><a href="/libs/functional/hash/index.html">Hash</a>:</span>
A TR1 hash
function object, from Daniel James. Highlights:
<ul>
<li>
Support for <code><span class="keyword">long</span> <span class="keyword">long</span></code>,
<code><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span></code>.
</li>
<li>
Improved the algorithm for hashing floating point numbers.
</li>
<li>
A few bug and warning fixes.
</li>
</ul>
</li>
</ul>
</div>
<div id="version_1_35_0.supported_compilers">

View File

@@ -12,7 +12,7 @@
[section New Libraries]
* [phrase library..[@/libs/asio/index.html ASIO]:] Portable networking,
* [phrase library..[@/libs/asio/index.html Asio]:] Portable networking,
including sockets, timers, hostname resolution and socket iostreams,
from Chris Kohlhoff.
* [phrase library..[@/libs/bimap/index.html Bimap]:] Boost.Bimap is a
@@ -59,6 +59,46 @@
some existing code. See [@/libs/iostreams/doc/index.html?path=12 Release Notes]
for details.
* Numerous other bug fixes and optimizations.
* [phrase library..[@/libs/thread/index.html Thread]:]
* Instances of boost::thread and of the various lock types are now movable.
* Threads can be interrupted at interruption points.
* Condition variables can now be used with any type that implements the
Lockable concept, through the use of `boost::condition_variable_any`
(`boost::condition` is a typedef to `boost::condition_variable_any`, provided for
backwards compatibility). `boost::condition_variable` is provided as an
optimization, and will only work with `boost::unique_lock<boost::mutex>`
(`boost::mutex::scoped_lock`).
* Thread IDs are separated from boost::thread, so a thread can obtain it's
own ID (using `boost::this_thread::get_id()`), and IDs can be used as keys in
associative containers, as they have the full set of comparison operators.
* Timeouts are now implemented using the Boost DateTime library, through a
typedef `boost::system_time` for absolute timeouts, and with support for relative
timeouts in many cases. `boost::xtime` is supported for backwards compatibility
only.
* Locks are implemented as publicly accessible templates `boost::lock_guard`,
`boost::unique_lock`, `boost::shared_lock`, and `boost::upgrade_lock`, which are
templated on the type of the mutex. The Lockable concept has been extended to
include publicly available `lock()` and `unlock()` member functions, which are used
by the lock types.
* `boost::try_mutex` has been removed, and the functionality subsumed into
`boost::mutex`. `boost::try_mutex` is left as a typedef, but is no longer a separate
class.
* `boost::recursive_try_mutex` has been removed, and the functionality
subsumed into `boost::recursive_mutex`. `boost::recursive_try_mutex` is left as a
typedef, but is no longer a separate class.
* `boost::detail::thread::lock_ops` has been removed. Code that relies on the
`lock_ops` implementation detail will no longer work, as this has been removed, as
it is no longer necessary now that mutex types now have public `lock()` and
`unlock()` member functions.
* `scoped_lock` constructors with a second parameter of type bool are no
longer provided. With previous boost releases,
`boost::mutex::scoped_lock some_lock(some_mutex,false);`
could be used to create a lock object that was associated with a mutex,
but did not lock it on construction. This facility has now been replaced with
the constructor that takes a `boost::defer_lock_type` as the second parameter:
`boost::mutex::scoped_lock some_lock(some_mutex,boost::defer_lock);`
* The broken `boost::read_write_mutex` has been replaced with
`boost::shared_mutex`.
* [phrase library..[@/libs/wave/index.html Wave]:] Standards conformant implementation of the
mandated C99/C++ preprocessor functionality packed behind an easy to use
iterator interface, from Hartmut Kaiser. Highlights:

View File

@@ -14,7 +14,7 @@
&amp;lt;h3&amp;gt;&amp;lt;span class=&quot;link&quot;&amp;gt;New Libraries&amp;lt;/span&amp;gt;&amp;lt;/h3&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;
&amp;lt;span class=&quot;library&quot;&amp;gt;&amp;lt;a href=&quot;/libs/asio/index.html&quot;&amp;gt;ASIO&amp;lt;/a&amp;gt;:&amp;lt;/span&amp;gt; Portable networking,
&amp;lt;span class=&quot;library&quot;&amp;gt;&amp;lt;a href=&quot;/libs/asio/index.html&quot;&amp;gt;Asio&amp;lt;/a&amp;gt;:&amp;lt;/span&amp;gt; Portable networking,
including sockets, timers, hostname resolution and socket iostreams, from
Chris Kohlhoff.
&amp;lt;/li&amp;gt;
@@ -99,6 +99,79 @@
&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;
&amp;lt;span class=&quot;library&quot;&amp;gt;&amp;lt;a href=&quot;/libs/thread/index.html&quot;&amp;gt;Thread&amp;lt;/a&amp;gt;:&amp;lt;/span&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;
Instances of boost::thread and of the various lock types are now movable.
&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;
Threads can be interrupted at interruption points.
&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;
Condition variables can now be used with any type that implements the
Lockable concept, through the use of &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;condition_variable_any&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;
(&amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;condition&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; is a typedef to &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;condition_variable_any&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;, provided for
backwards compatibility). &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;condition_variable&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;
is provided as an optimization, and will only work with &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;unique_lock&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;&amp;amp;lt;&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;mutex&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;
(&amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;mutex&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;scoped_lock&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;).
&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;
Thread IDs are separated from boost::thread, so a thread can obtain it's
own ID (using &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;this_thread&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;get_id&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;()&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;),
and IDs can be used as keys in associative containers, as they have the
full set of comparison operators.
&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;
Timeouts are now implemented using the Boost DateTime library, through
a typedef &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;system_time&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; for absolute timeouts,
and with support for relative timeouts in many cases. &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;xtime&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;
is supported for backwards compatibility only.
&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;
Locks are implemented as publicly accessible templates &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;lock_guard&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;unique_lock&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;,
&amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;shared_lock&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;upgrade_lock&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;,
which are templated on the type of the mutex. The Lockable concept has
been extended to include publicly available &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;lock&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;()&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;unlock&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;()&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; member functions, which are used by
the lock types.
&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;
&amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;try_mutex&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; has been removed, and the
functionality subsumed into &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;mutex&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;.
&amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;try_mutex&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; is left as a typedef, but
is no longer a separate class.
&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;
&amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;recursive_try_mutex&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; has been removed,
and the functionality subsumed into &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;recursive_mutex&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;.
&amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;recursive_try_mutex&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; is left as a typedef,
but is no longer a separate class.
&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;
&amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;detail&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;thread&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;lock_ops&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; has been removed. Code that
relies on the &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;lock_ops&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;
implementation detail will no longer work, as this has been removed,
as it is no longer necessary now that mutex types now have public &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;lock&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;()&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;
and &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;unlock&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;()&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;
member functions.
&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;
&amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;scoped_lock&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; constructors
with a second parameter of type bool are no longer provided. With previous
boost releases, &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;mutex&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;scoped_lock&amp;lt;/span&amp;gt;
&amp;lt;span class=&quot;identifier&quot;&amp;gt;some_lock&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;(&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;some_mutex&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;,&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;keyword&quot;&amp;gt;false&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;);&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;
could be used to create a lock object that was associated with a mutex,
but did not lock it on construction. This facility has now been replaced
with the constructor that takes a &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;defer_lock_type&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;
as the second parameter: &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;mutex&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;scoped_lock&amp;lt;/span&amp;gt;
&amp;lt;span class=&quot;identifier&quot;&amp;gt;some_lock&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;(&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;some_mutex&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;,&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;defer_lock&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;);&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;
&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;
The broken &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;read_write_mutex&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; has been replaced
with &amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;boost&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;shared_mutex&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;.
&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;
&amp;lt;span class=&quot;library&quot;&amp;gt;&amp;lt;a href=&quot;/libs/wave/index.html&quot;&amp;gt;Wave&amp;lt;/a&amp;gt;:&amp;lt;/span&amp;gt; Standards conformant
implementation of the mandated C99/C++ preprocessor functionality packed
@@ -159,6 +232,23 @@
&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;
&amp;lt;span class=&quot;library&quot;&amp;gt;&amp;lt;a href=&quot;/libs/functional/hash/index.html&quot;&amp;gt;Hash&amp;lt;/a&amp;gt;:&amp;lt;/span&amp;gt;
A TR1 hash
function object, from Daniel James. Highlights:
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;
Support for &amp;lt;code&amp;gt;&amp;lt;span class=&quot;keyword&quot;&amp;gt;long&amp;lt;/span&amp;gt; &amp;lt;span class=&quot;keyword&quot;&amp;gt;long&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;,
&amp;lt;code&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;std&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;special&quot;&amp;gt;::&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;identifier&quot;&amp;gt;complex&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;.
&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;
Improved the algorithm for hashing floating point numbers.
&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;
A few bug and warning fixes.
&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div id=&quot;version_1_35_0.supported_compilers&quot;&amp;gt;