| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> |
| <title>History</title> |
| <link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css"> |
| <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> |
| <link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> |
| <link rel="up" href="../thread.html" title="Chapter 30. Thread 4.5.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_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.h1"></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.h2"></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.h3"></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.h4"></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.h5"></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.h6"></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.h7"></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.h8"></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.h9"></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.h10"></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.h11"></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.h12"></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.h13"></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.h14"></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 -15 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> |