2
0
mirror of https://github.com/boostorg/thread.git synced 2026-01-27 07:22:11 +00:00
Files
thread/doc/changes.qbk
Eric Niebler 9d24b8042b Merged revisions 44071-44110 via svnmerge from
https://svn.boost.org/svn/boost/trunk

........
  r44071 | andreas_huber69 | 2008-04-06 08:16:00 -0700 (Sun, 06 Apr 2008) | 1 line
  
  Adapted fifo_scheduler<> to the changed allocator interface of boost::function.
........
  r44073 | pdimov | 2008-04-06 09:23:42 -0700 (Sun, 06 Apr 2008) | 1 line
  
  Add MT runs of yield_k_test and spinlock_try_test.
........
  r44074 | pdimov | 2008-04-06 09:53:11 -0700 (Sun, 06 Apr 2008) | 1 line
  
  detail/spinlock_pool.hpp added.
........
  r44078 | ramey | 2008-04-06 13:01:48 -0700 (Sun, 06 Apr 2008) | 1 line
  
  change BOOST_IS_ABSTRACT to BOOST_ASSUME_ABSTRACT
........
  r44079 | ramey | 2008-04-06 13:02:54 -0700 (Sun, 06 Apr 2008) | 1 line
  
  change BOOST_IS_ABSTRACT to BOOST_ASSUME_ABSTRACT
........
  r44080 | ramey | 2008-04-06 13:03:21 -0700 (Sun, 06 Apr 2008) | 1 line
  
  change BOOST_IS_ABSTRACT to BOOST_ASSUME_ABSTRACT
........
  r44081 | ramey | 2008-04-06 13:03:59 -0700 (Sun, 06 Apr 2008) | 1 line
  
  change BOOST_IS_ABSTRACT to BOOST_ASSUME_ABSTRACT
........
  r44082 | ramey | 2008-04-06 13:04:20 -0700 (Sun, 06 Apr 2008) | 1 line
  
  enhanced test to detect more errors
........
  r44083 | ramey | 2008-04-06 13:05:56 -0700 (Sun, 06 Apr 2008) | 2 lines
  
  remove supperfluous abstract.hpp header
........
  r44086 | jurko | 2008-04-06 15:36:59 -0700 (Sun, 06 Apr 2008) | 1 line
  
  Made the msvc toolset registration example consistent with its comment and added an additional one specifying the exact msvc version. Many stylistic comment changes.
........
  r44087 | jurko | 2008-04-07 02:55:18 -0700 (Mon, 07 Apr 2008) | 10 lines
  
    Solved the problem with child process returning the value 259 (Windows constant STILL_ACTIVE) causing bjam never to detect that it exited and therefore keep running in an endless loop. Done by relying on the Windows WaitForMultipleObjects() function to detect when a process has exited instead of GetExitCodeProcess(). The later function's MSDN article (http://msdn2.microsoft.com/en-us/library/ms683189(VS.85).aspx) warns about this problem.
  
    Solved the problem with bjam going into an active wait state, hogging up processor resources, when waiting for one of its child processes to terminate while not all of its available child process slots are being used. To see this bug in action, try compiling a simple C++ program on a 2 processor PC with the -j 2 command-line option and watching how much processor resources bjam uses while linking. Was caused by treating unused process slots as used in the try_wait() function, causing the WaitForMultipleObjects() Windows API call to exit instantly with an error which was then getting incorrectly interpreted as a timeout, starting the whole cycle anew.
  
    Solved a race condition between bjam's output reading/child process termination detection and the child process's output generation/termination which could have caused bjam not to collect the terminated process's final output.
  
    Extracted all GetExitCodeProcess() API calls into one location so it no longer gets called in three separate places.
  
    Minor comment changes in code touched by previous fixes.
........
  r44088 | jurko | 2008-04-07 03:32:09 -0700 (Mon, 07 Apr 2008) | 4 lines
  
    Fixed a bug with bjam not handling the '\' root Windows path correctly without its drive letter being specified. One effect could be seen by MkDir rule on such a path always attempting to create its base folder even if that folder already exists. For example if you attempted to create folder '\Projects\XYZ\BuildDir' it would incorrectly think that '\Projects' folder does not exist and attempt to create it - thus causing the whole build to fail due to the underlying OS mkdir command failing.
  
    This was caused by the file_dirscan() function in the filent.c module not working correctly when passed '\' as its dir. It then messed up when formatting its file-selection parameter for the _findfirst()/findfirst() API and constructed it as '\/*' which caused that API to fail and return -1 which was in turn being interpreted as 'file not found'.
........
  r44089 | anthonyw | 2008-04-07 06:09:36 -0700 (Mon, 07 Apr 2008) | 1 line
  
  Added locked-> owns_lock change to breaking changes
........
  r44091 | johnmaddock | 2008-04-07 08:58:51 -0700 (Mon, 07 Apr 2008) | 4 lines
  
  Merged changes from sandbox to Trunk:
  New special functions for truncation and rounding, plus exponential integrals and zeta.
  New non central distributions.
  Updated equation png's so that they are all consistent.
........
  r44093 | johnmaddock | 2008-04-07 09:34:28 -0700 (Mon, 07 Apr 2008) | 1 line
  
  Updated last commit info, plus compiler compatibility and news.
........
  r44094 | ramey | 2008-04-07 10:05:38 -0700 (Mon, 07 Apr 2008) | 4 lines
  
  updated markup for serialization library
  eliminated deprecated tests
  enabled tests on vacpp
........
  r44095 | ramey | 2008-04-07 10:07:00 -0700 (Mon, 07 Apr 2008) | 1 line
  
  change BOOST_IS_ABSTRACT to BOOST_ASSUME_ABSTRACT
........
  r44096 | ramey | 2008-04-07 10:23:07 -0700 (Mon, 07 Apr 2008) | 1 line
  
  changed type traits macro to BOOST_TT_BROKEN_COMPILER_SPEC
........
  r44104 | emildotchevski | 2008-04-07 12:00:45 -0700 (Mon, 07 Apr 2008) | 1 line
  
  fixed compile errors on various platforms
........


[SVN r44111]
2008-04-08 15:40:33 +00:00

53 lines
3.1 KiB
Plaintext

[section:changes Changes since boost 1.34]
Almost every line of code in __boost_thread__ 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.
[heading New Features]
* Instances of __thread__ and of the various lock types are now movable.
* Threads can be interrupted at __interruption_points__.
* Condition variables can now be used with any type that implements the __lockable_concept__, through the use of
`boost::condition_variable_any` (`boost::condition` is a `typedef` to `boost::condition_variable_any`, provided for backwards
compatibility). `boost::condition_variable` is provided as an optimization, and will only work with
`boost::unique_lock<boost::mutex>` (`boost::mutex::scoped_lock`).
* Thread IDs are separated from __thread__, so a thread can obtain it's own ID (using `boost::this_thread::get_id()`), and IDs can
be used as keys in associative containers, as they have the full set of comparison operators.
* Timeouts are now implemented using the Boost DateTime library, through a typedef `boost::system_time` for absolute timeouts, and
with support for relative timeouts in many cases. `boost::xtime` is supported for backwards compatibility only.
* Locks are implemented as publicly accessible templates `boost::lock_guard`, `boost::unique_lock`, `boost::shared_lock`, and
`boost::upgrade_lock`, which are templated on the type of the mutex. The __lockable_concept__ has been extended to include publicly
available __lock_ref__ and __unlock_ref__ member functions, which are used by the lock types.
[heading Breaking Changes]
The list below should cover all changes to the public interface which break backwards compatibility.
* __try_mutex__ has been removed, and the functionality subsumed into __mutex__. __try_mutex__ is left as a `typedef`,
but is no longer a separate class.
* __recursive_try_mutex__ has been removed, and the functionality subsumed into
__recursive_mutex__. __recursive_try_mutex__ is left as a `typedef`, but is no longer a separate class.
* `boost::detail::thread::lock_ops` has been removed. Code that relies on the `lock_ops` implementation detail will no longer work,
as this has been removed, as it is no longer necessary now that mutex types now have public __lock_ref__ and __unlock_ref__ member
functions.
* `scoped_lock` constructors with a second parameter of type `bool` are no longer provided. With previous boost releases,
``boost::mutex::scoped_lock some_lock(some_mutex,false);`` could be used to create a lock object that was associated with a mutex,
but did not lock it on construction. This facility has now been replaced with the constructor that takes a
`boost::defer_lock_type` as the second parameter: ``boost::mutex::scoped_lock some_lock(some_mutex,boost::defer_lock);``
* The `locked()` member function of the `scoped_lock` types has been renamed to __owns_lock_ref__.
* The broken `boost::read_write_mutex` has been replaced with __shared_mutex__.
[endsect]