/
BirdLeon
/
ROBLOX2016
Обзор
Документация
Войти
/
BirdLeon
/
ROBLOX2016
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
Library/boost/doc/html/thread/changes.html
2 523 строки
126 KB
PatoFlamejanteTV
full source code
19 дек 2024, 19:11
19 дек 2024, 19:11
05db15d
Код
Авторство
О чём код?
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>History</title> <link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css"> <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> <link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> <link rel="up" href="../thread.html" title="Chapter 39. Thread 4.8.0"> <link rel="prev" href="build.html" title="Using and building the library"> <link rel="next" href="future.html" title="Future"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table cellpadding="2" width="100%"><tr> <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td> <td align="center"><a href="../../../index.html">Home</a></td> <td align="center"><a href="../../../libs/libraries.htm">Libraries</a></td> <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> <td align="center"><a href="../../../more/index.htm">More</a></td> </tr></table> <hr> <div class="spirit-nav"> <a accesskey="p" href="build.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../thread.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="future.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> </div> <div class="section"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> <a name="thread.changes"></a><a class="link" href="changes.html" title="History">History</a> </h2></div></div></div> <h4> <a name="thread.changes.h0"></a> <span class="phrase"><a name="thread.changes.version_4_9_0___boost_1_70"></a></span><a class="link" href="changes.html#thread.changes.version_4_9_0___boost_1_70">Version 4.9.0 - boost 1.70</a> </h4> <p> <span class="bold"><strong>Know Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/3926" target="_top">#3926</a> thread_specific_ptr + dlopen library causes a SIGSEGV. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10964" target="_top">#10964</a> future<future<T>>::unwrap().then() Deadlocks </li> </ul></div> <p> Please take a look at <a href="https://svn.boost.org/trac/boost/query?status=assigned&status=new&status=reopened&component=thread&type=!Feature+Requests&col=id&col=summary&order=id" target="_top">thread Know Bugs</a> to see the current state. </p> <p> Please take a look at <a href="http://www.boost.org/development/tests/master/developer/thread.html" target="_top">thread master regression test</a> to see the last regression test snapshot. </p> <p> <span class="bold"><strong>Fixed Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="https://github.com/boostorg/thread/pull/268" target="_top">https://github.com/boostorg/thread/pull/268</a> Add self contained header tests and fix discovered bugs </li> <li class="listitem"> Improvements support for cygwin platform using the pthread interface. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> <a href="https://github.com/boostorg/thread/pull/263" target="_top">https://github.com/boostorg/thread/pull/263</a> Fix compilation of timed functions on Cygwin $ <a href="https://github.com/boostorg/thread/pull/262" target="_top">https://github.com/boostorg/thread/pull/262</a> Fix MinGW warnings about violation of the strict aliasing rules </li></ul></div> </li> <li class="listitem"> <a href="https://github.com/boostorg/thread/pull/260" target="_top">https://github.com/boostorg/thread/pull/260</a> Fix "interruption_point" defined twice. </li> <li class="listitem"> <a href="https://github.com/boostorg/thread/pull/249" target="_top">https://github.com/boostorg/thread/pull/249</a> Simplify TSS cleanup routines. Fixes #236 </li> </ul></div> <p> <span class="bold"><strong>New Experimental Features:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> Since BOOST_THREAD_VERSION 5, BOOST_THREAD_USES_EXECUTOR is defined by default. </li> <li class="listitem"> <a href="https://github.com/boostorg/thread/pull/266" target="_top">https://github.com/boostorg/thread/pull/266</a> Remove linking with Boost.System </li> </ul></div> <h4> <a name="thread.changes.h1"></a> <span class="phrase"><a name="thread.changes.version_4_8_1___boost_1_67"></a></span><a class="link" href="changes.html#thread.changes.version_4_8_1___boost_1_67">Version 4.8.1 - boost 1.67</a> </h4> <p> <span class="bold"><strong>Know Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/3926" target="_top">#3926</a> thread_specific_ptr + dlopen library causes a SIGSEGV. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10964" target="_top">#10964</a> future<future<T>>::unwrap().then() Deadlocks </li> </ul></div> <p> Please take a look at <a href="https://svn.boost.org/trac/boost/query?status=assigned&status=new&status=reopened&component=thread&type=!Feature+Requests&col=id&col=summary&order=id" target="_top">thread Know Bugs</a> to see the current state. </p> <p> Please take a look at <a href="http://www.boost.org/development/tests/master/developer/thread.html" target="_top">thread master regression test</a> to see the last regression test snapshot. </p> <p> <span class="bold"><strong>Fixed Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="https://github.com/boostorg/thread/issues/162" target="_top">#162</a> fix as much time-related issues as possible and improve the QOI </li> <li class="listitem"> <a href="https://github.com/boostorg/thread/issues/193" target="_top">#193</a> future_then unit test contains two different implementations of do_continuation function </li> <li class="listitem"> <a href="https://github.com/boostorg/thread/issues/209" target="_top">#209</a> Legal problem with <code class="computeroutput"><span class="identifier">win32</span><span class="special">/</span><span class="identifier">thread_primitives</span><span class="special">.</span><span class="identifier">hpp</span></code> </li> </ul></div> <h4> <a name="thread.changes.h2"></a> <span class="phrase"><a name="thread.changes.version_4_8_0___boost_1_66"></a></span><a class="link" href="changes.html#thread.changes.version_4_8_0___boost_1_66">Version 4.8.0 - boost 1.66</a> </h4> <p> <span class="bold"><strong>Know Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/3926" target="_top">#3926</a> thread_specific_ptr + dlopen library causes a SIGSEGV. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10964" target="_top">#10964</a> future<future<T>>::unwrap().then() Deadlocks </li> </ul></div> <p> Please take a look at <a href="https://svn.boost.org/trac/boost/query?status=assigned&status=new&status=reopened&component=thread&type=!Feature+Requests&col=id&col=summary&order=id" target="_top">thread Know Bugs</a> to see the current state. </p> <p> Please take a look at <a href="http://www.boost.org/development/tests/master/developer/thread.html" target="_top">thread master regression test</a> to see the last regression test snapshot. </p> <p> <span class="bold"><strong>Fixed Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/12323" target="_top">#12323</a> windows - boost/thread/win32/mfc_thread_init.hpp has wrong signature for _pRawDllMainOrig </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/12730" target="_top">#12730</a> windows - static threads library is incompatible with MSVC 2017 RC </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/12976" target="_top">#12976</a> Boost Thread Executors documentation mistakes </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/12949" target="_top">#12949</a> using sleep_for in a thread context without including boost/thread/thread.hpp yields incorrect behaviour when BOOST_THREAD_HAS_CONDATTR_SET_CLOCK_MONOTONIC is defined </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/13019" target="_top">#13019</a> ABI compatibility for BOOST_THREAD_PROVIDES_INTERRUPTIONS incomplete </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/13069" target="_top">#13069</a> Boost unit test "sync_pq_multi_thread_p_lib.exe" hung in thread library </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/13163" target="_top">#13163</a> boost::detail::heap_new does not have a variadic variant </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/13226" target="_top">#13226</a> getpagesize() is deprecated since 199506L </li> <li class="listitem"> <a href="https://github.com/boostorg/thread/issues/132" target="_top">#132</a> VS 2017.4 Preview deadlocks on Test 10964 </li> <li class="listitem"> <a href="https://github.com/boostorg/thread/issues/133" target="_top">#133</a> windows - Spurious timing test failures on windows </li> <li class="listitem"> <a href="https://github.com/boostorg/thread/issues/134" target="_top">#134</a> VS 2017.4 Preview deadlock in sync_pq_multi_thread_p_lib.exe </li> <li class="listitem"> <a href="https://github.com/boostorg/thread/issues/135" target="_top">#135</a> VS 2017.4 Preview test_scheduled_tp_p.exe deadlock </li> <li class="listitem"> <a href="https://github.com/boostorg/thread/issues/136" target="_top">#136</a> VS 2017.4 Preview test_scheduler_p.exe deadlock </li> <li class="listitem"> <a href="https://github.com/boostorg/thread/issues/137" target="_top">#137</a> VS 2017.4 Preview executor_ex.exe deadlock </li> <li class="listitem"> <a href="https://github.com/boostorg/thread/issues/143" target="_top">#143</a> Failures on msvc-12.0 </li> <li class="listitem"> <a href="https://github.com/boostorg/thread/issues/145" target="_top">#145</a> Clang build error with BOOST_THREAD_ATTRIBUTE_MAY_ALIAS </li> </ul></div> <p> <span class="bold"><strong>New Experimental Features:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <a href="https://github.com/boostorg/thread/issues/116" target="_top">#116</a> [Proposal] Add APIs for deferred set_value/exception </li></ul></div> <h4> <a name="thread.changes.h3"></a> <span class="phrase"><a name="thread.changes.version_4_7_5___boost_1_65_1"></a></span><a class="link" href="changes.html#thread.changes.version_4_7_5___boost_1_65_1">Version 4.7.5 - boost 1.65.1</a> </h4> <p> <span class="bold"><strong>Fixed Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <a href="https://github.com/boostorg/thread/issues/130" target="_top">#130</a> windows: Bug in boost::condition_variable on Windows </li></ul></div> <h4> <a name="thread.changes.h4"></a> <span class="phrase"><a name="thread.changes.version_4_7_4___boost_1_65"></a></span><a class="link" href="changes.html#thread.changes.version_4_7_4___boost_1_65">Version 4.7.4 - boost 1.65</a> </h4> <p> <span class="bold"><strong>Fixed Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6787" target="_top">#6787</a> boost::thread::sleep() hangs if system time is rolled back </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/12519" target="_top">#12519</a> boost::thread::try_join_for does not return after timeout </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/12874" target="_top">#12874</a> future<> extension constructor must be under BOOST_THREAD_PROVIDES_FUTURE_UNWRAP </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/12888" target="_top">#12888</a> Linking with boost thread does not work on mingw/gcc 4.4 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/12958" target="_top">#12958</a> sync_bounded_queue::wait_pull_front( lve ) might throw </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/13077" target="_top">#13077</a> Linking to static 64bit libboost_thread fails DLL initialization </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/13155" target="_top">#13155</a> log doesn't build on a system with pthreads </li> <li class="listitem"> <a href="https://github.com/boostorg/thread/issues/121" target="_top">#121</a> on_tls_prepare is broken under VS2017 </li> </ul></div> <h4> <a name="thread.changes.h5"></a> <span class="phrase"><a name="thread.changes.version_4_7_3___boost_1_64"></a></span><a class="link" href="changes.html#thread.changes.version_4_7_3___boost_1_64">Version 4.7.3 - boost 1.64</a> </h4> <p> <span class="bold"><strong>Fixed Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="https://github.com/boostorg/thread/issues/113" target="_top">#113</a> Add a Thread template on all the scoped thread and thread guard classes </li> <li class="listitem"> <a href="https://github.com/boostorg/thread/issues/117" target="_top">#117</a> loop_executor should block on it's work_queue instead of polling </li> <li class="listitem"> <a href="https://github.com/boostorg/thread/issues/119" target="_top">#119</a> basic_condition_variable::relocker::~relocker can throw an exception </li> </ul></div> <h4> <a name="thread.changes.h6"></a> <span class="phrase"><a name="thread.changes.version_4_7_2___boost_1_63"></a></span><a class="link" href="changes.html#thread.changes.version_4_7_2___boost_1_63">Version 4.7.2 - boost 1.63</a> </h4> <p> <span class="bold"><strong>Fixed Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> fix boost::synchronized_value<>::load() </li> <li class="listitem"> fix relational operators of boost::synchronized_value<> </li> <li class="listitem"> fix compile failed with boost::user_scheduler </li> <li class="listitem"> Fix minor possibility of loosing the notify </li> </ul></div> <h4> <a name="thread.changes.h7"></a> <span class="phrase"><a name="thread.changes.version_4_7_1___boost_1_62"></a></span><a class="link" href="changes.html#thread.changes.version_4_7_1___boost_1_62">Version 4.7.1 - boost 1.62</a> </h4> <p> <span class="bold"><strong>Know Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/3926" target="_top">#3926</a> thread_specific_ptr + dlopen library causes a SIGSEGV. </li></ul></div> <p> Please define BOOST_THREAD_PATCH to apply the patch that could unfortunately results is a regression as described in <a href="http://svn.boost.org/trac/boost/ticket/12049" target="_top">#12049</a>. </p> <p> Please take a look at <a href="https://svn.boost.org/trac/boost/query?status=assigned&status=new&status=reopened&component=thread&type=!Feature+Requests&col=id&col=summary&order=id" target="_top">thread Know Bugs</a> to see the current state. </p> <p> Please take a look at <a href="http://www.boost.org/development/tests/master/developer/thread.html" target="_top">thread master regression test</a> to see the last regression test snapshot. </p> <p> <span class="bold"><strong>Fixed Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11097" target="_top">#11097</a> test_scheduled_tp - ThreadSanitizer: heap-use-after-free </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11951" target="_top">#11951</a> Memory leak in boost::when_all </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/12102" target="_top">#12102</a> condition_variable_fwd.hpp fails to compile when BOOST_THREAD_PROVIDES_INTERRUPTIONS is disabled </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/12120" target="_top">#12120</a> Performance improvement in thread/barrier.hpp </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/12146" target="_top">#12146</a> make_exceptional_future is not mentioned in the docs </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/12202" target="_top">#12202</a> shared_lock should be in shared_mutex header </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/12220" target="_top">#12220</a> Memory leak in future::then() </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/12293" target="_top">#12293</a> boost::future::then lambda called before future is ready. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/12350" target="_top">#12350</a> shared_mutex (pthreads) unlocked too early in unlock_shared() </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/12371" target="_top">#12371</a> boost thread/future.hpp fails to build </li> </ul></div> <p> and several PR </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> #88 fix typos in boost::upgrade_lock </li> <li class="listitem"> #89 fix a bug in upgrade_to_unique_lock<>::operator=() </li> <li class="listitem"> #90 fix a bug in try_lock_wrapper<>::operator=() </li> <li class="listitem"> #91 Add shared_lock_guard to the included lock types </li> <li class="listitem"> #92 Fixed compilation with MSVC-8. </li> <li class="listitem"> #93 Fix variable shadowing warnings (Clang) </li> <li class="listitem"> #94 fix bugs in boost::barrier </li> <li class="listitem"> #95 fix a mistake in boost::completion_latch </li> <li class="listitem"> #96 rename async_func.hpp to invoker.hpp. </li> <li class="listitem"> #97 fix a mistake in sync_timed_queue<>::pull_until() </li> </ul></div> <h4> <a name="thread.changes.h8"></a> <span class="phrase"><a name="thread.changes.version_4_7_0___boost_1_61"></a></span><a class="link" href="changes.html#thread.changes.version_4_7_0___boost_1_61">Version 4.7.0 - boost 1.61</a> </h4> <p> <span class="bold"><strong>Know Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/3926" target="_top">#3926</a> thread_specific_ptr + dlopen library causes a SIGSEGV. </li></ul></div> <p> Please define BOOST_THREAD_PATCH to apply the patch that could unfortunately results is a regression as described in <a href="http://svn.boost.org/trac/boost/ticket/12049" target="_top">#12049</a>. </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/4833" target="_top">#4833</a> MinGW/test_tss_lib: Support of automatic tss cleanup for native threading API not available </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8600" target="_top">#8600</a> wait_for_any hangs, if called with multiple copies of shared_future referencing same task </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9118" target="_top">#9118</a> Seg fault on thread join when llvm and libc++ are used </li> </ul></div> <p> Please take a look at <a href="https://svn.boost.org/trac/boost/query?status=assigned&status=new&status=reopened&component=thread&type=!Feature+Requests&col=id&col=summary&order=id" target="_top">thread Know Bugs</a> to see the current state. </p> <p> Please take a look at <a href="http://www.boost.org/development/tests/master/developer/thread.html" target="_top">thread trunk regression test</a> to see the last regression test snapshot. </p> <p> <span class="bold"><strong>New Experimental Features:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11772" target="_top">#11772</a> Add a launch::sync policy </li></ul></div> <p> <span class="bold"><strong>Fixed Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11494" target="_top">#11494</a> boost::this_thread::yield() is marked as deprecated in the synopsis </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11562" target="_top">#11562</a> (condition_variable_any::wait_until + recursive_mutex + steady_clock) timer expires after computer time is set forward on Ubuntu 64-bit </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/12013" target="_top">#12013</a> F_pass and FArgs_pass tests segfault </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/12036" target="_top">#12036</a> boost::physical_concurrency always returns 0 if BOOST_USE_WINAPI_VERSION is not defined </li> </ul></div> <h4> <a name="thread.changes.h9"></a> <span class="phrase"><a name="thread.changes.version_4_6_0___boost_1_60"></a></span><a class="link" href="changes.html#thread.changes.version_4_6_0___boost_1_60">Version 4.6.0 - boost 1.60</a> </h4> <p> <span class="bold"><strong>Know Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/4833" target="_top">#4833</a> MinGW/test_tss_lib: Support of automatic tss cleanup for native threading API not available </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8600" target="_top">#8600</a> wait_for_any hangs, if called with multiple copies of shared_future referencing same task </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9118" target="_top">#9118</a> Seg fault on thread join when llvm and libc++ are used </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10942" target="_top">#10942</a> Boost.Thread fails to build on Cygwin. </li> </ul></div> <p> Please take a look at <a href="https://svn.boost.org/trac/boost/query?status=assigned&status=new&status=reopened&component=thread&type=!Feature+Requests&col=id&col=summary&order=id" target="_top">thread Know Bugs</a> to see the current state. </p> <p> Please take a look at <a href="http://www.boost.org/development/tests/master/developer/thread.html" target="_top">thread trunk regression test</a> to see the last regression test snapshot. </p> <p> <span class="bold"><strong>New Experimental Features:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11231" target="_top">#11231</a> Allow to set continuation future's destructor behavior to non-blocking </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11424" target="_top">#11424</a> Provide shared_timed_mutex as an alternative name for shared_mutex and deprecate the use of shared_mutex as a timed mutex </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11734" target="_top">#11734</a> future::then(Cont) should be able to execute the continuation on undetermined thread </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11736" target="_top">#11736</a> Allow to use launch::executor on future::then(launch::executor, cont) </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11737" target="_top">#11737</a> Add a launch::inherit policy that can be used on ::then() to use the policy of the parent future </li> </ul></div> <p> <span class="bold"><strong>Fixed Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6377" target="_top">#6377</a> Condition variable blocks when changing time </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6787" target="_top">#6787</a> boost::thread::sleep() hangs if system time is rolled back </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7665" target="_top">#7665</a> this_thread::sleep_for no longer uses steady_clock in thread </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7720" target="_top">#7720</a> exception lock_error while intensive locking/unlocking of mutex </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9309" target="_top">#9309</a> test_latch fails often on clang-darwin-tot11 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10788" target="_top">#10788</a> GetLogicalProcessor isn't available for Windows platform less or equals to 0x0502 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11090" target="_top">#11090</a> ex_future_unwrap- ThreadSanitizer: lock-order-inversion (potential deadlock) </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11158" target="_top">#11158</a> Pthread thread deadlock when faketime used </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11174" target="_top">#11174</a> boost::condition_variable::timed_wait with predicate unexpectedly wakes up while should wait infinite </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11185" target="_top">#11185</a> Incorrect URL redirection </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11192" target="_top">#11192</a> boost::future<>::then() with an executor doesn't compile when the callback returns a future </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11250" target="_top">#11250</a> future made from make_exceptional fails on assertion in destructor </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11256" target="_top">#11256</a> future<>::is_ready() == false in continuation function </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11261" target="_top">#11261</a> bad use of scoped threads in basic_thread_pool </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11262" target="_top">#11262</a> bad use of direct pointer in shared_state_nullary_task </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11263" target="_top">#11263</a> lock already locked lock </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11266" target="_top">#11266</a> boost::packaged_task has invalid variadic signature </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11302" target="_top">#11302</a> boost thread doesn't build with BOOST_THREAD_PATCH. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11322" target="_top">#11322</a> sleep_for() nanoseconds overload will always return too early on windows </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11329" target="_top">#11329</a> using declarative for GetProcessHeap, .... fails </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11368" target="_top">#11368</a> boost thread's usage of CreateWaitableTimer wakes PC from sleep (doh) </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11377" target="_top">#11377</a> Boost condition variable always waits for system clock deadline </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11435" target="_top">#11435</a> gcc compiler warning in future.hpp </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11555" target="_top">#11555</a> devector.hpp assumes allocator_traits_type is always present </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11562" target="_top">#11562</a> (condition_variable_any::wait_until + recursive_mutex + steady_clock) timer expires after computer time is set forward on Ubuntu 64-bit </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11672" target="_top">#11672</a> Thread: Should use unique_ptr, not auto_ptr </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11688" target="_top">#11688</a> thread::try_join_until: Avoid busy wait if system clock changes </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11672" target="_top">#11716</a> ::then(f) should inherit the parent Executor </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11795" target="_top">#11795</a> Incorrect version specification for documentation of thread destructor </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11796" target="_top">#11796</a> Thread move assignment operator, does not detach previous thread data </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11817" target="_top">#11817</a> 'sync_queue_is_closed' was not declared in boost/thread/executors/thread_executor.hpp </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11818" target="_top">#11818</a> future.then will be blocked if promise is set after the invocation of then </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/12049" target="_top">#12049</a> Assertion failure from detached threads during shutdown </li> </ul></div> <h4> <a name="thread.changes.h10"></a> <span class="phrase"><a name="thread.changes.version_4_5_0___boost_1_58"></a></span><a class="link" href="changes.html#thread.changes.version_4_5_0___boost_1_58">Version 4.5.0 - boost 1.58</a> </h4> <p> <span class="bold"><strong>Know Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/3926" target="_top">#3926</a> thread_specific_ptr + dlopen library causes a SIGSEGV. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/4833" target="_top">#4833</a> MinGW/test_tss_lib: Support of automatic tss cleanup for native threading API not available </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8600" target="_top">#8600</a> wait_for_any hangs, if called with multiple copies of shared_future referencing same task </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9118" target="_top">#9118</a> Seg fault on thread join when llvm and libc++ are used </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9309" target="_top">#9309</a> test_latch fails often on clang-darwin-tot11 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9311" target="_top">#9311</a> ex_lambda_future fails on msvc-11.0 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10942" target="_top">#10942</a> Boost.Thread fails to build on Cygwin. </li> </ul></div> <p> Please take a look at <a href="https://svn.boost.org/trac/boost/query?status=assigned&status=new&status=reopened&component=thread&type=!Feature+Requests&col=id&col=summary&order=id" target="_top">thread Know Bugs</a> to see the current state. </p> <p> Please take a look at <a href="http://www.boost.org/development/tests/master/developer/thread.html" target="_top">thread trunk regression test</a> to see the last regression test snapshot. </p> <p> <span class="bold"><strong>Sever limitations:</strong></span> </p> <p> There are some severe bugs that prevent the use of the library on concrete contexts, in particular: </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> on thread specific storage that prevent the library to be used with dynamic libraries ( <a href="http://svn.boost.org/trac/boost/ticket/3926" target="_top">#3926</a>, ), </li></ul></div> <p> <span class="bold"><strong>New Experimental Features:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9600" target="_top">#9600</a> Async: Add task_region </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10611" target="_top">#10611</a> Add emplace promise::set_value and emplace make_ready_future </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10826" target="_top">#10826</a> Add scheduled executor operations </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11048" target="_top">#11048</a> Add a serial_executor based on continuations </li> </ul></div> <p> <span class="bold"><strong>Fixed Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6787" target="_top">#6787</a> boost::thread::sleep() hangs if system time is rolled back </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10734" target="_top">#10734</a> Submit method work differently on different executors, some throw exception and some silently ignore error (thread_executor and inline_executor) </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10736" target="_top">#10736</a> Task exceptions silently ignored. I think std::terminate solution from N3785 and std::thread is better choice and more consistent. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10737" target="_top">#10737</a> In serial_executor we have infinite wait if task throw exception. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10822" target="_top">#10822</a> Boost.Thread fails to compile on Android </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10824" target="_top">#10824</a> Boost.Thread 1.57 breaks Windows XP compatibility for SP2 and below. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10963" target="_top">#10963</a> future<future<T>>::then Has No Implementation </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10964" target="_top">#10964</a> future<future<T>>::unwrap().then() Deadlocks </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10968" target="_top">#10968</a> The futures returned by async() and future::then() are not blocking. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10971" target="_top">#10971</a> shared_future::get()/get_or() must be const </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10972" target="_top">#10972</a> shared_future::then() can be called multiple times. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10979" target="_top">#10979</a> Support T& type deduction when the make_ready_future parameter is reference_wrapper<T> </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10996" target="_top">#10996</a> Thread physical_concurrency() is failing on Windows </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11035" target="_top">#11035</a> BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE not defined for Android </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/11053" target="_top">#11053</a> The attached code results in a R6025 - pure virtual function call in run_thread_exit_callbacks </li> </ul></div> <h4> <a name="thread.changes.h11"></a> <span class="phrase"><a name="thread.changes.version_4_4_0___boost_1_57"></a></span><a class="link" href="changes.html#thread.changes.version_4_4_0___boost_1_57">Version 4.4.0 - boost 1.57</a> </h4> <p> <span class="bold"><strong>Know Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/2442" target="_top">#2442</a> Application statically linked with Boost.Thread crashes when Google Desktop is installed (Windows XP) </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/3926" target="_top">#3926</a> thread_specific_ptr + dlopen library causes a SIGSEGV. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/4833" target="_top">#4833</a> MinGW/test_tss_lib: Support of automatic tss cleanup for native threading API not available </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7319" target="_top">#7319</a> Take care of c++std-lib-32966 issue </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8600" target="_top">#8600</a> wait_for_any hangs, if called with multiple copies of shared_future referencing same task </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9118" target="_top">#9118</a> Seg fault on thread join when llvm and libc++ are used </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9309" target="_top">#9309</a> test_latch fails often on clang-darwin-tot11 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9310" target="_top">#9310</a> test_4648_lib fails on clang-darwin-asan11 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9311" target="_top">#9311</a> ex_lambda_future fails on msvc-11.0 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10537" target="_top">#10537</a> Application crash on throw exception </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10651" target="_top">#10651</a> boost::thread leaks memory when using the MinGW compiler </li> </ul></div> <p> Please take a look at <a href="https://svn.boost.org/trac/boost/query?status=assigned&status=new&status=reopened&component=thread&type=!Feature+Requests&col=id&col=summary&order=id" target="_top">thread Know Bugs</a> to see the current state. </p> <p> Please take a look at <a href="http://www.boost.org/development/tests/master/developer/thread.html" target="_top">thread trunk regression test</a> to see the last snapshot. </p> <p> <span class="bold"><strong>Sever limitations:</strong></span> </p> <p> There are some severe bugs that prevent the use of the library on concrete contexts, in particular: </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> on thread specific storage that prevent the library to be used with dynamic libraries, </li></ul></div> <p> <span class="bold"><strong>New Experimental Features:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6227" target="_top">#6227</a> Synchro: Use of variadic templates on Generic Locking Algorithms on compilers providing them </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10298" target="_top">#10298</a> Synchro: Added queue views. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10300" target="_top">#10300</a> Async: Added generic_executor_ref. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10552" target="_top">#10552</a> Add make_valid_future </li> </ul></div> <p> <span class="bold"><strong>Fixed Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6782" target="_top">#6782</a> call_once uses incorrect barrier intrinsic on Visual Studio </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6787" target="_top">#6787</a> boost::thread::sleep() hangs if system time is rolled back </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7665" target="_top">#7665</a> this_thread::sleep_for no longer uses steady_clock in thread </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9307" target="_top">#9307</a> future::fallback_to assert with ERRORRRRR boost: mutex lock failed in pthread_mutex_lock: Invalid argument </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9308" target="_top">#9308</a> future::async fails with terminate called throwing an exception when called with a lambda - clang-darwin-asan11 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9310" target="_top">#9310</a> test_4648_lib fails on clang-darwin-asan11 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9425" target="_top">#9425</a> Boost promise & future does not use supplied allocator for value storage </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9558" target="_top">#9558</a> future continuations unit test hangs in get()/pthread_cond_wait() on Mac 10.7/32-bit/x86/darwin-4.2.1 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9787" target="_top">#9787</a> [windows] Small duration value passed down to basic_timed_mutex::try_lock_until and condition_variable::wait_until can cause infinite or near infinite wait for win32 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9880" target="_top">#9880</a> [windows] boost::condition_variable.timed_wait() exception if system time < 1970 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10159" target="_top">#10159</a> GCC 4.4 error sorry, unimplemented </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10196" target="_top">#10196</a> thread_specific_ptr does not support void* </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10296" target="_top">#10296</a> Boost.Thread 1.56 rc1 does not compile on Mingw </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10297" target="_top">#10297</a> Boost.Thread 1.56 rc1 hangs when built with clang on armhf </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10340" target="_top">#10340</a> No boost::promise<T>::set_value(const T&) overload present in C++03 mode </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10425" target="_top">#10425</a> Missing documentation for when_all/when_any. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10426" target="_top">#10426</a> Take in account the deferred futures in when_all. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10427" target="_top">#10427</a> Take in account the deferred and ready futures in when_any. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10428" target="_top">#10428</a> Adapt to new unique_ptr interface in Boost.Move </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10465" target="_top">#10465</a> Missing implementation of when_all/when_any when the result is a tuple. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10476" target="_top">#10476</a> classes using BOOST_THREAD_MOVABLE_ONLY<T> dont satisfy is_copy_constructible<T>::value == false </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10478" target="_top">#10478</a> Data race in boost/thread/future.hpp </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10529" target="_top">#10529</a> The pthread/condition_variable_any constructor reports incorrect error code for pthread_cond_init </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/10563" target="_top">#10563</a> shared_future<R>::then should be const </li> </ul></div> <h4> <a name="thread.changes.h12"></a> <span class="phrase"><a name="thread.changes.version_4_3_0___boost_1_56"></a></span><a class="link" href="changes.html#thread.changes.version_4_3_0___boost_1_56">Version 4.3.0 - boost 1.56</a> </h4> <p> <span class="bold"><strong>Know Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/2442" target="_top">#2442</a> Application statically linked with Boost.Thread crashes when Google Desktop is installed (Windows XP) </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/3926" target="_top">#3926</a> thread_specific_ptr + dlopen library causes a SIGSEGV. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/4833" target="_top">#4833</a> MinGW/test_tss_lib: Support of automatic tss cleanup for native threading API not available </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6782" target="_top">#6782</a> call_once uses incorrect barrier intrinsic on Visual Studio </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7319" target="_top">#7319</a> Take care of c++std-lib-32966 issue </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8600" target="_top">#8600</a> wait_for_any hangs, if called with multiple copies of shared_future referencing same task </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9307" target="_top">#9307</a> future::fallback_to assert with ERRORRRRR boost: mutex lock failed in pthread_mutex_lock: Invalid argument </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9308" target="_top">#9308</a> future::async fails with terminate called throwing an exception when called with a lambda - clang-darwin-asan11 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9310" target="_top">#9310</a> test_4648_lib fails on clang-darwin-asan11 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9311" target="_top">#9311</a> ex_lambda_future fails on msvc-11.0 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9425" target="_top">#9425</a> Boost promise & future does not use supplied allocator for value storage </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9558" target="_top">#9558</a> future continuations unit test hangs in get()/pthread_cond_wait() on Mac 10.7/32-bit/x86/darwin-4.2.1 </li> </ul></div> <p> Please take a look at <a href="https://svn.boost.org/trac/boost/query?status=assigned&status=new&status=reopened&component=thread&type=!Feature+Requests&col=id&col=summary&order=id" target="_top">thread Know Bugs</a> to see the current state. </p> <p> Please take a look at <a href="http://www.boost.org/development/tests/master/developer/thread.html" target="_top">thread trunk regression test</a> to see the last snapshot. </p> <p> <span class="bold"><strong>Sever limitations:</strong></span> </p> <p> There are some severe bugs that prevent the use of the library on concrete contexts, in particular: </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> on thread specific storage that prevent the library to be used with dynamic libraries, </li> <li class="listitem"> The experimental features of boost::future have some severe holes that make the program crash unexpectedly. </li> </ul></div> <p> <span class="bold"><strong>New Experimental Features:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7446" target="_top">#7446</a> Async: Add when_any. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7447" target="_top">#7447</a> Async: Add when_all. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7448" target="_top">#7448</a> Async: Add async taking a scheduler parameter. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8274" target="_top">#8274</a> Synchro: Add concurrent queue </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8518" target="_top">#8518</a> Synchro: Add a latch class. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8513" target="_top">#8513</a> Async: Add a basic thread_pool executor. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8516" target="_top">#8516</a> Async: Add future/shared_future::then taking a scheduler as parameter. </li> </ul></div> <p> <span class="bold"><strong>Fixed Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8070" target="_top">#8070</a> prefer GetTickCount64 over GetTickCount </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9333" target="_top">#9333</a> ex_scoped_thread compile fails on msvc-12.0 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9366" target="_top">#9366</a> async(Executor, ...) fails to compile with msvc-10,11,12 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9402" target="_top">#9402</a> test_excutor regression on msvc-10,11,12 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9404" target="_top">#9404</a> ex_make_future regression error </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9471" target="_top">#9471</a> Synchronization documentation nits </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9535" target="_top">#9535</a> Missing exception safety might result in crash </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9618" target="_top">#9618</a> try_join_for problem: program is not terminate. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9673" target="_top">#9673</a> thread compilation with MingW/gcc on Windows gives errors </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9708" target="_top">#9708</a> boost::condition_variable::timed_wait unexpectedly wakes up while should wait infinite </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9711" target="_top">#9711</a> future continuation called twice </li> </ul></div> <h4> <a name="thread.changes.h13"></a> <span class="phrase"><a name="thread.changes.version_4_2_0___boost_1_55"></a></span><a class="link" href="changes.html#thread.changes.version_4_2_0___boost_1_55">Version 4.2.0 - boost 1.55</a> </h4> <p> <span class="bold"><strong>Know Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/2442" target="_top">#2442</a> Application statically linked with Boost.Thread crashes when Google Desktop is installed (Windows XP) </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/3926" target="_top">#3926</a> thread_specific_ptr + dlopen library causes a SIGSEGV. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/4833" target="_top">#4833</a> MinGW/test_tss_lib: Support of automatic tss cleanup for native threading API not available </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6782" target="_top">#6782</a> call_once uses incorrect barrier intrinsic on Visual Studio </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7319" target="_top">#7319</a> Take care of c++std-lib-32966 issue </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8600" target="_top">#8600</a> wait_for_any hangs, if called with multiple copies of shared_future referencing same task </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9307" target="_top">#9307</a> future::fallback_to assert with ERRORRRRR boost: mutex lock failed in pthread_mutex_lock: Invalid argument </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9308" target="_top">#9308</a> future::async fails with terminate called throwing an exception when called with a lambda - clang-darwin-asan11 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9311" target="_top">#9311</a> ex_lambda_future fails on msvc-11.0 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9310" target="_top">#9310</a> test_4648_lib fails on clang-darwin-asan11 </li> </ul></div> <p> Please take a look at <a href="https://svn.boost.org/trac/boost/query?status=assigned&status=new&status=reopened&component=thread&type=!Feature+Requests&col=id&col=summary&order=id" target="_top">thread trunk regression test</a> to see the current state. </p> <p> <span class="bold"><strong>Sever limitations:</strong></span> </p> <p> There are some severe bugs that prevent the use of the library on concrete contexts, in particular: </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> on thread specific storage that prevent the library to be used with dynamic libraries, </li> <li class="listitem"> The experimental features of boost::future have some severe holes that make the program crash unexpectedly. </li> </ul></div> <p> <span class="bold"><strong>New Features:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8519" target="_top">#8519</a> Synchro: Update class barrier with a completion function. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8515" target="_top">#8515</a> Async: Add shared_future::then. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8519" target="_top">#8519</a> Synchro: Update class barrier with a completion function </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8615" target="_top">#8615</a> Async: Replace make_future/make_shared_future by make_ready_future. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8627" target="_top">#8627</a> Async: Add future<>::unwrap and unwrapping constructor. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8677" target="_top">#8677</a> Async: Add future<>::get_or. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8678" target="_top">#8678</a> Async: Add future<>::fallback_to. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8891" target="_top">#8891</a> upgrade_to_unique_lock: missing mutex() function. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8955" target="_top">#8955</a> Request for more efficient way to get exception_ptr from future. </li> </ul></div> <p> <span class="bold"><strong>Fixed Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7461" target="_top">#7461</a> detail::win32::ReleaseSemaphore may be called with count_to_release equal to 0 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8070" target="_top">#8070</a> prefer GetTickCount64 over GetTickCount </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8768" target="_top">#8768</a> win32 condition_variable::wait_until infinite wait in rare cases. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8817" target="_top">#8817</a> Boost Thread Windows CE _createthreadex handling breaks mingw w64. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8943" target="_top">#8943</a> Failed to compile code using boost::call_once with Intel C++ Composer XE 2013 on Windows. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8931" target="_top">#8931</a> Typos in external_locking reference. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9029" target="_top">#9029</a> Misprint in documentation. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9037" target="_top">#9037</a> gcc -Wshadow gives warnings in condition_variable{,_fwd}.hpp. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9041" target="_top">#9041</a> Boost.Thread DSO's may need to link with Boost.Atomic. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9048" target="_top">#9048</a> boost::scoped_thread useless ctor with variadic template arguments. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/9079" target="_top">#9079</a> Condition variable will wait forever for some timepoint values (Win). </li> </ul></div> <h4> <a name="thread.changes.h14"></a> <span class="phrase"><a name="thread.changes.version_4_1_0___boost_1_54"></a></span><a class="link" href="changes.html#thread.changes.version_4_1_0___boost_1_54">Version 4.1.0 - boost 1.54</a> </h4> <p> <span class="bold"><strong>New Features:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7285" target="_top">#7285</a> C++11 compliance: Allow to pass movable arguments for call_once. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7445" target="_top">#7445</a> Async: Add future<>.then </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7449" target="_top">#7449</a> Synchro: Add a synchronized value class </li> </ul></div> <p> <span class="bold"><strong>Fixed Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/4878" target="_top">#4878</a> MinGW 4.5.0 undefined reference to bool interruptible_wait(detail::win32::handle handle_to_wait_for,detail::t imeout target_time). </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/4882" target="_top">#4882</a> Win32 shared_mutex does not handle timeouts correctly. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/5752" target="_top">#5752</a> boost::call_once() is unreliable on some platforms </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6652" target="_top">#6652</a> Boost.Thread shared_mutex.hpp:50:99: warning: dereferencing type-punned pointer will break strict-aliasing rules <span class="strikethrough">Wstrict-aliasing</span> </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6843" target="_top">#6843</a> [Intel C++] Compile Errors with '#include <atomic>' </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6966" target="_top">#6966</a> future boost::future_category inconsistent dll linkage </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7720" target="_top">#7720</a> exception lock_error while intensive locking/unlocking of mutex </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7755" target="_top">#7755</a> Thread: deadlock with shared_mutex on Windows </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7980" target="_top">#7980</a> Build error: msvc-11.0 and BOOST_THREAD_DONT_USE_DATETIME </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7982" target="_top">#7982</a> pthread_delay_np() parm compile error on AIX </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8027" target="_top">#8027</a> thread library fails to compile with Visual Studio 2003 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8070" target="_top">#8070</a> prefer GetTickCount64 over GetTickCount </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8136" target="_top">#8136</a> boost::this_thread::sleep_for() sleeps longer than it should in Windows </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8212" target="_top">#8212</a> Boost thread compilation error on Solaris 10 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8237" target="_top">#8237</a> fix documentation for 'thread_group' </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8239" target="_top">#8239</a> barrier::wait() not marked as interruption_point </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8323" target="_top">#8323</a> boost::thread::try_join_for/try_join_until may block indefinitely due to a combination of problems in Boost.Thread and Boost.Chrono </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8337" target="_top">#8337</a> The internal representation of "std::string(this->code()->message())" escapes, but is destroyed when it exits scope. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8371" target="_top">#8371</a> C++11 once_flag enabled when constexpr is not available </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8422" target="_top">#8422</a> Assertion in win32::WaitForSingleObject() </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8443" target="_top">#8443</a> Header file inclusion order may cause crashes </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8451" target="_top">#8451</a> Missing documented function 'boost::scoped_thread::joinable' </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8458" target="_top">#8458</a> -DBOOST_THREAD_DONT_USE_CHRONO in thread.obj.rsp but not explicitly set </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8530" target="_top">#8530</a> [Coverity] Unused variable thread_handle, uninitialized variable cond_mutex in thread/pthread/thread_data.hpp </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8550" target="_top">#8550</a> static linking of Boost.Thread with an MFC-Dll </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8576" target="_top">#8576</a> "sur parolle" should be "sur parole". </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8596" target="_top">#8596</a> With C++0x enabled, boost::packaged_task stores a reference to function objects, instead of a copy. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8626" target="_top">#8626</a> Reintroduce BOOST_VERIFY on pthread_mutex_destroy return type </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8645" target="_top">#8645</a> Typo in Strict lock definition </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8671" target="_top">#8671</a> promise: set_..._at_thread_exit </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8672" target="_top">#8672</a> future<>::then(void()) doesn't works </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/8674" target="_top">#8674</a> Futures as local named objects can't be returned with implicit move. </li> </ul></div> <h4> <a name="thread.changes.h15"></a> <span class="phrase"><a name="thread.changes.version_4_0_0___boost_1_53"></a></span><a class="link" href="changes.html#thread.changes.version_4_0_0___boost_1_53">Version 4.0.0 - boost 1.53</a> </h4> <p> <span class="bold"><strong>Deprecated features:</strong></span> </p> <div class="warning"><table border="0" summary="Warning"> <tr> <td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../doc/src/images/warning.png"></td> <th align="left">Warning</th> </tr> <tr><td align="left" valign="top"><p> Deprecated features since boost 1.53 will be available only until boost 1.58. </p></td></tr> </table></div> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> C++11 compliance: packaged_task<R> is deprecated, use instead packaged_task<R()>. See BOOST_THREAD_PROVIDES_SIGNATURE_PACKAGED_TASK and BOOST_THREAD_DONT_PROVIDE_SIGNATURE_PACKAGED_TASK </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7537" target="_top">#7537</a> deprecate Mutex::scoped_lock and scoped_try_lock and boost::condition </li> </ul></div> <p> <span class="bold"><strong>New Features:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6270" target="_top">#6270</a> c++11 compliance: Add thread constructor from movable callable and movable arguments Provided when BOOST_THREAD_PROVIDES_VARIADIC_THREAD is defined (Default value from Boost 1.55): See BOOST_THREAD_PROVIDES_VARIADIC_THREAD and BOOST_THREAD_DONT_PROVIDE_VARIADIC_THREAD. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7279" target="_top">#7279</a> C++11 compliance: Add noexcept in system related functions </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7280" target="_top">#7280</a> C++11 compliance: Add promise::...at_thread_exit functions </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7281" target="_top">#7281</a> C++11 compliance: Add ArgTypes to packaged_task template. Provided when BOOST_THREAD_PROVIDES_SIGNATURE_PACKAGED_TASK is defined (Default value from Boost 1.55). See BOOST_THREAD_PROVIDES_SIGNATURE_PACKAGED_TASK and BOOST_THREAD_DONT_PROVIDE_SIGNATURE_PACKAGED_TASK. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7282" target="_top">#7282</a> C++11 compliance: Add packaged_task::make_ready_at_thread_exit function </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7285" target="_top">#7285</a> C++11 compliance: Allow to pass movable arguments for call_once </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7412" target="_top">#7412</a> C++11 compliance: Add async from movable callable and movable arguments Provided when BOOST_THREAD_PROVIDES_VARIADIC_THREAD and BOOST_THREAD_PROVIDES_SIGNATURE_PACKAGED_TASK are defined (Default value from Boost 1.55): See BOOST_THREAD_PROVIDES_SIGNATURE_PACKAGED_TASK and BOOST_THREAD_DONT_PROVIDE_SIGNATURE_PACKAGED_TASK, BOOST_THREAD_PROVIDES_VARIADIC_THREAD and BOOST_THREAD_DONT_PROVIDE_VARIADIC_THREAD. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7413" target="_top">#7413</a> C++11 compliance: Add async when the launch policy is deferred. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7414" target="_top">#7414</a> C++11 compliance: future::get post-condition should be valid()==false. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7422" target="_top">#7422</a> Provide a condition variable with zero-overhead performance penality. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7414" target="_top">#7444</a> Async: Add make_future/make_shared_future. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7540" target="_top">#7540</a> Threads: Add a helper class that join a thread on destruction. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7541" target="_top">#7541</a> Threads: Add a thread wrapper class that joins on destruction. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7575" target="_top">#7575</a> C++11 compliance: A future created by async should "join" in the destructor. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7587" target="_top">#7587</a> Synchro: Add strict_lock and nested_strict_lock. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7588" target="_top">#7588</a> Synchro: Split the locks.hpp in several files to limit dependencies. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7590" target="_top">#7590</a> Synchro: Add lockable concept checkers based on Boost.ConceptCheck. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7591" target="_top">#7591</a> Add lockable traits that can be used with enable_if. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7592" target="_top">#7592</a> Synchro: Add a null_mutex that is a no-op and that is a model of UpgardeLockable. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7593" target="_top">#7593</a> Synchro: Add a externally_locked class. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7590" target="_top">#7594</a> Threads: Allow to disable thread interruptions. </li> </ul></div> <p> <span class="bold"><strong>Fixed Bugs:</strong></span> </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/5752" target="_top">#5752</a> boost::call_once() is unreliable on some platforms </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7464" target="_top">#7464</a> BOOST_TEST(n_alive == 1); fails due to race condition in a regression test tool. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7657" target="_top">#7657</a> Serious performance and memory consumption hit if condition_variable methods condition notify_one or notify_all is used repeatedly. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7665" target="_top">#7665</a> this_thread::sleep_for no longer uses steady_clock in thread. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7668" target="_top">#7668</a> thread_group::join_all() should check whether its threads are joinable. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7669" target="_top">#7669</a> thread_group::join_all() should catch resource_deadlock_would_occur. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7671" target="_top">#7671</a> Error including boost/thread.hpp header on iOS. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7672" target="_top">#7672</a> lockable_traits.hpp syntax error: "defined" token misspelled. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7798" target="_top">#7798</a> boost::future set_wait_callback thread safety issues. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7808" target="_top">#7808</a> Incorrect description of effects for this_thread::sleep_for and this_thread::sleep_until. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7812" target="_top">#7812</a> Returns: cv_status::no_timeout if the call is returning because the time period specified by rel_time has elapsed, cv_status::timeout otherwise. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7874" target="_top">#7874</a> compile warning: thread.hpp:342: warning: type attributes are honored only at type definition. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7875" target="_top">#7875</a> BOOST_THREAD_THROW_IF_PRECONDITION_NOT_SATISFIED should not be enabled by default. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7882" target="_top">#7882</a> wrong exception text from condition_variable::wait(unique_lock<mutex>&). </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7890" target="_top">#7890</a> thread::do_try_join_until() is missing a return type. </li> </ul></div> <h4> <a name="thread.changes.h16"></a> <span class="phrase"><a name="thread.changes.version_3_1_0___boost_1_52"></a></span><a class="link" href="changes.html#thread.changes.version_3_1_0___boost_1_52">Version 3.1.0 - boost 1.52</a> </h4> <p> Deprecated Features: </p> <p> Deprecated features since boost 1.50 available only until boost 1.55: </p> <p> These deprecated features will be provided by default up to boost 1.52. If you don't want to include the deprecated features you could define BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0. Since 1.53 these features will not be included any more by default. Since this version, if you want to include the deprecated features yet you could define BOOST_THREAD_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0. These deprecated features will be only available until boost 1.55, that is you have yet 1 year to move to the new features. </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> Time related functions don't using the Boost.Chrono library, use the chrono overloads instead. </li></ul></div> <p> Breaking changes when BOOST_THREAD_VERSION==3 (Default value since Boost 1.53): </p> <p> There are some new features which share the same interface but with different behavior. These breaking features are provided by default when BOOST_THREAD_VERSION is 3, but the user can however choose the version 2 behavior by defining the corresponding macro. As for the deprecated features, these broken features will be only available until boost 1.55. </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6229" target="_top">#6229</a> Rename the unique_future to future following the c++11. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6266" target="_top">#6266</a> Breaking change: thread destructor should call terminate if joinable. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6269" target="_top">#6269</a> Breaking change: thread move assignment should call terminate if joinable. </li> </ul></div> <p> New Features: </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/2361" target="_top">#2361</a> thread_specific_ptr: document nature of the key, complexity and rationale. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/4710" target="_top">#4710</a> C++11 compliance: Missing async(). </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7283" target="_top">#7283</a> C++11 compliance: Add notify_all_at_thread_exit. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7345" target="_top">#7345</a> C++11 compliance: Add noexcept to recursive mutex try_lock. </li> </ul></div> <p> Fixed Bugs: </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/2797" target="_top">#2797</a> Two problems with thread_specific_ptr. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/5274" target="_top">#5274</a> failed to compile future.hpp with stlport 5.1.5 under msvc8.1, because of undefined class. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/5431" target="_top">#5431</a> compile error in Windows CE 6.0(interlocked). </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/5696" target="_top">#5696</a> win32 detail::set_tss_data does nothing when tss_cleanup_function is NULL. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6931" target="_top">#6931</a> mutex waits forwever with Intel C++ Compiler XE 12.1.5.344 Build 20120612 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7045" target="_top">#7045</a> Thread library does not automatically compile date_time. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7173" target="_top">#7173</a> wrong function name interrupt_point(). </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7200" target="_top">#7200</a> Unable to build boost.thread modularized. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7220" target="_top">#7220</a> gcc 4.6.2 warns about inline+dllimport functions. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7238" target="_top">#7238</a> this_thread::sleep_for() does not respond to interrupt(). </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7245" target="_top">#7245</a> Minor typos on documentation related to version 3. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7272" target="_top">#7272</a> win32/thread_primitives.hpp: (Unneccessary) Warning. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7284" target="_top">#7284</a> Clarify that there is no access priority between lock and shared_lock on shared mutex. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7329" target="_top">#7329</a> boost/thread/future.hpp does not compile on HPUX. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7336" target="_top">#7336</a> BOOST_THREAD_DONT_USE_SYSTEM doesn't work. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7329" target="_top">#7349</a> packaged_task holds reference to temporary. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7350" target="_top">#7350</a> allocator_destructor does not destroy object </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7360" target="_top">#7360</a> Memory leak in pthread implementation of boost::thread_specific_ptr </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7370" target="_top">#7370</a> Boost.Thread documentation </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7438" target="_top">#7438</a> Segmentation fault in test_once regression test in group.join_all(); </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7461" target="_top">#7461</a> detail::win32::ReleaseSemaphore may be called with count_to_release equal to 0 </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7499" target="_top">#7499</a> call_once doesn't call even once </li> </ul></div> <h4> <a name="thread.changes.h17"></a> <span class="phrase"><a name="thread.changes.version_3_0_1___boost_1_51"></a></span><a class="link" href="changes.html#thread.changes.version_3_0_1___boost_1_51">Version 3.0.1 - boost 1.51</a> </h4> <p> Deprecated Features: </p> <p> Deprecated features since boost 1.50 available only until boost 1.55: </p> <p> These deprecated features will be provided by default up to boost 1.52. If you don't want to include the deprecated features you could define BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0. Since 1.53 these features will not be included any more by default. Since this version, if you want to include the deprecated features yet you could define BOOST_THREAD_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0. These deprecated features will be only available until boost 1.55, that is you have 1 year and a half to move to the new features. </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> Time related functions don't using the Boost.Chrono library, use the chrono overloads instead. </li></ul></div> <p> Breaking changes when BOOST_THREAD_VERSION==3: </p> <p> There are some new features which share the same interface but with different behavior. These breaking features are provided by default when BOOST_THREAD_VERSION is 3, but the user can however choose the version 2 behavior by defining the corresponding macro. As for the deprecated features, these broken features will be only available until boost 1.55. </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6229" target="_top">#6229</a> Rename the unique_future to future following the c++11. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6266" target="_top">#6266</a> Breaking change: thread destructor should call terminate if joinable. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6269" target="_top">#6269</a> Breaking change: thread move assignment should call terminate if joinable. </li> </ul></div> <p> Fixed Bugs: </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/4258" target="_top">#4258</a> Linking with boost thread does not work on mingw/gcc 4.5. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/4885" target="_top">#4885</a> Access violation in set_tss_data at process exit due to invalid assumption about TlsAlloc. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6931" target="_top">#6931</a> mutex waits forwever with Intel Compiler and /debug:parallel </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7044" target="_top">#7044</a> boost 1.50.0 header missing. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7052" target="_top">#7052</a> Thread: BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 only masks thread::operator==, thread::operator!= forward declarations, not definitions. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7066" target="_top">#7066</a> An attempt to fix current_thread_tls_key static initialization order. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7074" target="_top">#7074</a> Multiply defined symbol boost::allocator_arg. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7078" target="_top">#7078</a> Trivial 64-bit warning fix on Windows for thread attribute stack size </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/7089" target="_top">#7089</a> BOOST_THREAD_WAIT_BUG limits functionality without solving anything </li> </ul></div> <h4> <a name="thread.changes.h18"></a> <span class="phrase"><a name="thread.changes.version_3_0_0___boost_1_50"></a></span><a class="link" href="changes.html#thread.changes.version_3_0_0___boost_1_50">Version 3.0.0 - boost 1.50</a> </h4> <p> Breaking changes when BOOST_THREAD_VERSION==3: </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6229" target="_top">#6229</a> Breaking change: Rename the unique_future to future following the c++11. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6266" target="_top">#6266</a> Breaking change: thread destructor should call terminate if joinable. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6269" target="_top">#6269</a> Breaking change: thread move assignment should call terminate if joinable. </li> </ul></div> <p> New Features: </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/1850" target="_top">#1850</a> Request for unlock_guard to compliment lock_guard. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/2637" target="_top">#2637</a> Request for shared_mutex duration timed_lock and timed_lock_shared. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/2741" target="_top">#2741</a> Proposal to manage portable and non portable thread attributes. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/3567" target="_top">#3567</a> Request for shared_lock_guard. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6194" target="_top">#6194</a> Adapt to Boost.Move. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6195" target="_top">#6195</a> c++11 compliance: Provide the standard time related interface using Boost.Chrono. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6217" target="_top">#6217</a> Enhance Boost.Thread shared mutex interface following Howard Hinnant proposal. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6224" target="_top">#6224</a> c++11 compliance: Add the use of standard noexcept on compilers supporting them. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6225" target="_top">#6225</a> Add the use of standard =delete defaulted operations on compilers supporting them. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6226" target="_top">#6226</a> c++11 compliance: Add explicit bool conversion from locks. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6228" target="_top">#6228</a> Add promise constructor with allocator following the standard c++11. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6230" target="_top">#6230</a> c++11 compliance: Follows the exception reporting mechanism as defined in the c++11. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6231" target="_top">#6231</a> Add BasicLockable requirements in the documentation to follow c++11. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6272" target="_top">#6272</a> c++11 compliance: Add thread::id hash specialization. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6273" target="_top">#6273</a> c++11 compliance: Add cv_status enum class and use it on the conditions wait functions. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6342" target="_top">#6342</a> c++11 compliance: Adapt the one_flag to the c++11 interface. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6671" target="_top">#6671</a> upgrade_lock: missing mutex and release functions. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6672" target="_top">#6672</a> upgrade_lock:: missing constructors from time related types. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6675" target="_top">#6675</a> upgrade_lock:: missing non-member swap. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6676" target="_top">#6676</a> lock conversion should be explicit. </li> <li class="listitem"> Added missing packaged_task::result_type and packaged_task:: constructor with allocator. </li> <li class="listitem"> Added packaged_task::reset() </li> </ul></div> <p> Fixed Bugs: </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/2380" target="_top">#2380</a> boost::move from lvalue does not work with gcc. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/2430" target="_top">#2430</a> shared_mutex for win32 doesn't have timed_lock_upgrade. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/2575" target="_top">#2575</a> Bug- Boost 1.36.0 on Itanium platform. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/3160" target="_top">#3160</a> Duplicate tutorial code in boost::thread. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/4345" target="_top">#4345</a> thread::id and joining problem with cascade of threads. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/4521" target="_top">#4521</a> Error using boost::move on packaged_task (MSVC 10). </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/4711" target="_top">#4711</a> Must use implementation details to return move-only types. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/4921" target="_top">#4921</a> BOOST_THREAD_USE_DLL and BOOST_THREAD_USE_LIB are crucial and need to be documented. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/5013" target="_top">#5013</a> documentation: boost::thread: pthreas_exit causes terminate(). </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/5173" target="_top">#5173</a> boost::this_thread::get_id is very slow. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/5351" target="_top">#5351</a> interrupt a future get boost::unknown_exception. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/5516" target="_top">#5516</a> Upgrade lock is not acquired when previous upgrade lock releases if another read lock is present. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/5990" target="_top">#5990</a> shared_future<T>::get() has wrong return type. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6174" target="_top">#6174</a> packaged_task doesn't correctly handle moving results. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6222" target="_top">#6222</a> Compile error with SunStudio: unique_future move. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6354" target="_top">#6354</a> PGI: Compiler threading support is not turned on. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6673" target="_top">#6673</a> shared_lock: move assign doesn't works with c++11. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6674" target="_top">#6674</a> shared_mutex: try_lock_upgrade_until doesn't works. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6908" target="_top">#6908</a> Compile error due to unprotected definitions of _WIN32_WINNT and WINVER. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6940" target="_top">#6940</a> TIME_UTC is a macro in C11. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6959" target="_top">#6959</a> call of abs is ambiguous. </li> <li class="listitem"> Fix issue signaled on the ML with task_object(task_object const&) in presence of task_object(task_object &&) </li> </ul></div> <h4> <a name="thread.changes.h19"></a> <span class="phrase"><a name="thread.changes.version_2_1_1___boost_1_49"></a></span><a class="link" href="changes.html#thread.changes.version_2_1_1___boost_1_49">Version 2.1.1 - boost 1.49</a> </h4> <p> Fixed Bugs: </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/2309" target="_top">#2309</a> Lack of g++ symbol visibility support in Boost.Thread. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/2639" target="_top">#2639</a> documentation should be extended(defer_lock, try_to_lock, ...). </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/3639" target="_top">#3639</a> Boost.Thread doesn't build with Sun-5.9 on Linux. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/3762" target="_top">#3762</a> Thread can't be compiled with winscw (Codewarrior by Nokia). </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/3885" target="_top">#3885</a> document about mix usage of boost.thread and native thread api. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/3975" target="_top">#3975</a> Incorrect precondition for promise::set_wait_callback(). </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/4048" target="_top">#4048</a> thread::id formatting involves locale </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/4315" target="_top">#4315</a> gcc 4.4 Warning: inline ... declared as dllimport: attribute ignored. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/4480" target="_top">#4480</a> OpenVMS patches for compiler issues workarounds. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/4819" target="_top">#4819</a> boost.thread's documentation misprints. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/5423" target="_top">#5423</a> thread issues with C++0x. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/5617" target="_top">#5617</a> boost::thread::id copy ctor. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/5739" target="_top">#5739</a> set-but-not-used warnings with gcc-4.6. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/5826" target="_top">#5826</a> threads.cpp: resource leak on threads creation failure. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/5839" target="_top">#5839</a> thread.cpp: ThreadProxy leaks on exceptions. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/5859" target="_top">#5859</a> win32 shared_mutex constructor leaks on exceptions. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6100" target="_top">#6100</a> Compute hardware_concurrency() using get_nprocs() on GLIBC systems. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6168" target="_top">#6168</a> recursive_mutex is using wrong config symbol (possible typo). </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6175" target="_top">#6175</a> Compile error with SunStudio. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6200" target="_top">#6200</a> patch to have condition_variable and mutex error better handle EINTR. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6207" target="_top">#6207</a> shared_lock swap compiler error on clang 3.0 c++11. </li> <li class="listitem"> <a href="http://svn.boost.org/trac/boost/ticket/6208" target="_top">#6208</a> try_lock_wrapper swap compiler error on clang 3.0 c++11. </li> </ul></div> <h4> <a name="thread.changes.h20"></a> <span class="phrase"><a name="thread.changes.version_2_1_0___changes_since_boost_1_40"></a></span><a class="link" href="changes.html#thread.changes.version_2_1_0___changes_since_boost_1_40">Version 2.1.0 - Changes since boost 1.40</a> </h4> <p> The 1.41.0 release of Boost adds futures to the thread library. There are also a few minor changes. </p> <h4> <a name="thread.changes.h21"></a> <span class="phrase"><a name="thread.changes.changes_since_boost_1_35"></a></span><a class="link" href="changes.html#thread.changes.changes_since_boost_1_35">Changes since boost 1.35</a> </h4> <p> The 1.36.0 release of Boost includes a few new features in the thread library: </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> New generic <a class="link" href="synchronization.html#thread.synchronization.lock_functions.lock_multiple" title="Non-member function lock(Lockable1,Lockable2,...)"><code class="computeroutput"><span class="identifier">lock</span><span class="special">()</span></code></a> and <a class="link" href="synchronization.html#thread.synchronization.lock_functions.try_lock_multiple" title="Non-member function try_lock(Lockable1,Lockable2,...)"><code class="computeroutput"><span class="identifier">try_lock</span><span class="special">()</span></code></a> functions for locking multiple mutexes at once. </li> <li class="listitem"> Rvalue reference support for move semantics where the compilers supports it. </li> <li class="listitem"> A few bugs fixed and missing functions added (including the serious win32 condition variable bug). </li> <li class="listitem"> <code class="computeroutput"><span class="identifier">scoped_try_lock</span></code> types are now backwards-compatible with Boost 1.34.0 and previous releases. </li> <li class="listitem"> Support for passing function arguments to the thread function by supplying additional arguments to the <a class="link" href="thread_management.html#thread.thread_management.thread" title="Class thread"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code></a> constructor. </li> <li class="listitem"> Backwards-compatibility overloads added for <code class="computeroutput"><span class="identifier">timed_lock</span></code> and <code class="computeroutput"><span class="identifier">timed_wait</span></code> functions to allow use of <code class="computeroutput"><span class="identifier">xtime</span></code> for timeouts. </li> </ul></div> <h4> <a name="thread.changes.h22"></a> <span class="phrase"><a name="thread.changes.version_2_0_0___changes_since_boost_1_34"></a></span><a class="link" href="changes.html#thread.changes.version_2_0_0___changes_since_boost_1_34">Version 2.0.0 - Changes since boost 1.34</a> </h4> <p> Almost every line of code in <span class="bold"><strong>Boost.Thread</strong></span> has been changed since the 1.34 release of boost. However, most of the interface changes have been extensions, so the new code is largely backwards-compatible with the old code. The new features and breaking changes are described below. </p> <h4> <a name="thread.changes.h23"></a> <span class="phrase"><a name="thread.changes.new_features"></a></span><a class="link" href="changes.html#thread.changes.new_features">New Features</a> </h4> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> Instances of <a class="link" href="thread_management.html#thread.thread_management.thread" title="Class thread"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code></a> and of the various lock types are now movable. </li> <li class="listitem"> Threads can be interrupted at <a class="link" href="thread_management.html#interruption_points"><span class="emphasis"><em>interruption points</em></span></a>. </li> <li class="listitem"> Condition variables can now be used with any type that implements the <a class="link" href="synchronization.html#thread.synchronization.mutex_concepts.lockable" title="Lockable Concept"><code class="computeroutput"><span class="identifier">Lockable</span></code> concept</a>, through the use of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">condition_variable_any</span></code> (<code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">condition</span></code> is a <code class="computeroutput"><span class="keyword">typedef</span></code> to <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">condition_variable_any</span></code>, provided for backwards compatibility). <code class="computeroutput"><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 class="computeroutput"><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 class="computeroutput"><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 class="listitem"> Thread IDs are separated from <a class="link" href="thread_management.html#thread.thread_management.thread" title="Class thread"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code></a>, so a thread can obtain it's own ID (using <code class="computeroutput"><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 class="listitem"> Timeouts are now implemented using the Boost DateTime library, through a typedef <code class="computeroutput"><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 class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">xtime</span></code> is supported for backwards compatibility only. </li> <li class="listitem"> Locks are implemented as publicly accessible templates <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lock_guard</span></code>, <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">unique_lock</span></code>, <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_lock</span></code>, and <code class="computeroutput"><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 <a class="link" href="synchronization.html#thread.synchronization.mutex_concepts.lockable" title="Lockable Concept"><code class="computeroutput"><span class="identifier">Lockable</span></code> concept</a> has been extended to include publicly available <a class="link" href="synchronization.html#thread.synchronization.mutex_concepts.basic_lockable.lock" title="m.lock();"><code class="computeroutput"><span class="identifier">lock</span><span class="special">()</span></code></a> and <a class="link" href="synchronization.html#thread.synchronization.mutex_concepts.basic_lockable.unlock" title="m.unlock();"><code class="computeroutput"><span class="identifier">unlock</span><span class="special">()</span></code></a> member functions, which are used by the lock types. </li> </ul></div> <h4> <a name="thread.changes.h24"></a> <span class="phrase"><a name="thread.changes.breaking_changes"></a></span><a class="link" href="changes.html#thread.changes.breaking_changes">Breaking Changes</a> </h4> <p> The list below should cover all changes to the public interface which break backwards compatibility. </p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a class="link" href="synchronization.html#thread.synchronization.mutex_types.try_mutex" title="Typedef try_mutex"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">try_mutex</span></code></a> has been removed, and the functionality subsumed into <a class="link" href="synchronization.html#thread.synchronization.mutex_types.mutex" title="Class mutex"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span></code></a>. <a class="link" href="synchronization.html#thread.synchronization.mutex_types.try_mutex" title="Typedef try_mutex"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">try_mutex</span></code></a> is left as a <code class="computeroutput"><span class="keyword">typedef</span></code>, but is no longer a separate class. </li> <li class="listitem"> <a class="link" href="synchronization.html#thread.synchronization.mutex_types.recursive_try_mutex" title="Typedef recursive_try_mutex"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">recursive_try_mutex</span></code></a> has been removed, and the functionality subsumed into <a class="link" href="synchronization.html#thread.synchronization.mutex_types.recursive_mutex" title="Class recursive_mutex"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">recursive_mutex</span></code></a>. <a class="link" href="synchronization.html#thread.synchronization.mutex_types.recursive_try_mutex" title="Typedef recursive_try_mutex"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">recursive_try_mutex</span></code></a> is left as a <code class="computeroutput"><span class="keyword">typedef</span></code>, but is no longer a separate class. </li> <li class="listitem"> <code class="computeroutput"><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 class="computeroutput"><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 <a class="link" href="synchronization.html#thread.synchronization.mutex_concepts.basic_lockable.lock" title="m.lock();"><code class="computeroutput"><span class="identifier">lock</span><span class="special">()</span></code></a> and <a class="link" href="synchronization.html#thread.synchronization.mutex_concepts.basic_lockable.unlock" title="m.unlock();"><code class="computeroutput"><span class="identifier">unlock</span><span class="special">()</span></code></a> member functions. </li> <li class="listitem"> <code class="computeroutput"><span class="identifier">scoped_lock</span></code> constructors with a second parameter of type <code class="computeroutput"><span class="keyword">bool</span></code> are no longer provided. With previous boost releases, <pre class="programlisting"><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></pre> 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 class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">defer_lock_type</span></code> as the second parameter: <pre class="programlisting"><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></pre> </li> <li class="listitem"> The <code class="computeroutput"><span class="identifier">locked</span><span class="special">()</span></code> member function of the <code class="computeroutput"><span class="identifier">scoped_lock</span></code> types has been renamed to <a class="link" href="synchronization.html#thread.synchronization.locks.unique_lock.owns_lock" title="bool owns_lock() const"><code class="computeroutput"><span class="identifier">owns_lock</span><span class="special">()</span></code></a>. </li> <li class="listitem"> You can no longer obtain a <a class="link" href="thread_management.html#thread.thread_management.thread" title="Class thread"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code></a> instance representing the current thread: a default-constructed <a class="link" href="thread_management.html#thread.thread_management.thread" title="Class thread"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span></code></a> object is not associated with any thread. The only use for such a thread object was to support the comparison operators: this functionality has been moved to <a class="link" href="thread_management.html#thread.thread_management.thread.id" title="Class boost::thread::id"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">thread</span><span class="special">::</span><span class="identifier">id</span></code></a>. </li> <li class="listitem"> The broken <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">read_write_mutex</span></code> has been replaced with <a class="link" href="synchronization.html#thread.synchronization.mutex_types.shared_mutex" title="Class shared_mutex -- C++14"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_mutex</span></code></a>. </li> <li class="listitem"> <a class="link" href="synchronization.html#thread.synchronization.mutex_types.mutex" title="Class mutex"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span></code></a> is now never recursive. For Boost releases prior to 1.35 <a class="link" href="synchronization.html#thread.synchronization.mutex_types.mutex" title="Class mutex"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mutex</span></code></a> was recursive on Windows and not on POSIX platforms. </li> <li class="listitem"> When using a <a class="link" href="synchronization.html#thread.synchronization.mutex_types.recursive_mutex" title="Class recursive_mutex"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">recursive_mutex</span></code></a> with a call to <a class="link" href="synchronization.html#thread.synchronization.condvar_ref.condition_variable_any.wait" title="template<typename lock_type> void wait(lock_type& lock)"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">condition_variable_any</span><span class="special">::</span><span class="identifier">wait</span><span class="special">()</span></code></a>, the mutex is only unlocked one level, and not completely. This prior behaviour was not guaranteed and did not feature in the tests. </li> </ul></div> </div> <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> <td align="left"></td> <td align="right"><div class="copyright-footer">Copyright © 2007 -11 Anthony Williams<br>Copyright © 2011 -17 Vicente J. Botet Escriba<p> Distributed under the Boost Software License, Version 1.0. (See accompanying 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>) </p> </div></td> </tr></table> <hr> <div class="spirit-nav"> <a accesskey="p" href="build.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../thread.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="future.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> </div> </body> </html>