1 | <?xml version="1.0" encoding="utf-8"?> |
---|
2 | <!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" |
---|
3 | "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd" [ |
---|
4 | <!ENTITY % threads.entities SYSTEM "entities.xml"> |
---|
5 | %threads.entities; |
---|
6 | ]> |
---|
7 | <section id="threads.release_notes" last-revision="$Date: 2004/08/05 18:07:20 $"> |
---|
8 | <title>Release Notes</title> |
---|
9 | <section id="threads.release_notes.boost_1_32_0"> |
---|
10 | <title>Boost 1.32.0</title> |
---|
11 | |
---|
12 | <section id="threads.release_notes.boost_1_32_0.change_log.documentation"> |
---|
13 | <title>Documentation converted to BoostBook</title> |
---|
14 | |
---|
15 | <para>The documentation was converted to BoostBook format, |
---|
16 | and a number of errors and inconsistencies were |
---|
17 | fixed in the process. |
---|
18 | Since this was a fairly large task, there are likely to be |
---|
19 | more errors and inconsistencies remaining. If you find any, |
---|
20 | please report them!</para> |
---|
21 | </section> |
---|
22 | |
---|
23 | <section id="threads.release_notes.boost_1_32_0.change_log.static_link"> |
---|
24 | <title>Statically-link build option added</title> |
---|
25 | |
---|
26 | <para>The option to link &Boost.Threads; as a static |
---|
27 | library has been added (with some limitations on Win32 platforms). |
---|
28 | This feature was originally removed from an earlier version |
---|
29 | of Boost because <classname>boost::thread_specific_ptr</classname> |
---|
30 | required that &Boost.Threads; be dynamically linked in order |
---|
31 | for its cleanup functionality to work on Win32 platforms. |
---|
32 | Because this limitation never applied to non-Win32 platforms, |
---|
33 | because significant progress has been made in removing |
---|
34 | the limitation on Win32 platforms (many thanks to |
---|
35 | Aaron LaFramboise and Roland Scwarz!), and because the lack |
---|
36 | of static linking is one of the most common complaints of |
---|
37 | &Boost.Threads; users, this decision was reversed.</para> |
---|
38 | |
---|
39 | <para>On non-Win32 platforms: |
---|
40 | To choose the dynamically linked version of &Boost.Threads; |
---|
41 | using Boost's auto-linking feature, #define BOOST_THREAD_USE_DLL; |
---|
42 | to choose the statically linked version, |
---|
43 | #define BOOST_THREAD_USE_LIB. |
---|
44 | If neither symbols is #defined, the default will be chosen. |
---|
45 | Currently the default is the statically linked version.</para> |
---|
46 | |
---|
47 | <para>On Win32 platforms using VC++: |
---|
48 | Use the same #defines as for non-Win32 platforms |
---|
49 | (BOOST_THREAD_USE_DLL and BOOST_THREAD_USE_LIB). |
---|
50 | If neither is #defined, the default will be chosen. |
---|
51 | Currently the default is the statically linked version |
---|
52 | if the VC++ run-time library is set to |
---|
53 | "Multi-threaded" or "Multi-threaded Debug", and |
---|
54 | the dynamically linked version |
---|
55 | if the VC++ run-time library is set to |
---|
56 | "Multi-threaded DLL" or "Multi-threaded Debug DLL".</para> |
---|
57 | |
---|
58 | <para>On Win32 platforms using compilers other than VC++: |
---|
59 | Use the same #defines as for non-Win32 platforms |
---|
60 | (BOOST_THREAD_USE_DLL and BOOST_THREAD_USE_LIB). |
---|
61 | If neither is #defined, the default will be chosen. |
---|
62 | Currently the default is the dynamically linked version |
---|
63 | because it has not yet been possible to implement automatic |
---|
64 | tss cleanup in the statically linked version for compilers |
---|
65 | other than VC++, although it is hoped that this will be |
---|
66 | possible in a future version of &Boost.Threads;. |
---|
67 | |
---|
68 | Note for advanced users: &Boost.Threads; provides several "hook" |
---|
69 | functions to allow users to experiment with the statically |
---|
70 | linked version on Win32 with compilers other than VC++. |
---|
71 | These functions are on_process_enter(), on_process_exit(), |
---|
72 | on_thread_enter(), and on_thread_exit(), and are defined |
---|
73 | in tls_hooks.cpp. See the comments in that file for more |
---|
74 | information.</para> |
---|
75 | </section> |
---|
76 | |
---|
77 | <section id="threads.release_notes.boost_1_32_0.change_log.barrier"> |
---|
78 | <title>Barrier functionality added</title> |
---|
79 | |
---|
80 | <para>A new class, <classname>boost::barrier</classname>, was added.</para> |
---|
81 | </section> |
---|
82 | |
---|
83 | <section id="threads.release_notes.boost_1_32_0.change_log.read_write_mutex"> |
---|
84 | <title>Read/write mutex functionality added</title> |
---|
85 | |
---|
86 | <para>New classes, |
---|
87 | <classname>boost::read_write_mutex</classname>, |
---|
88 | <classname>boost::try_read_write_mutex</classname>, and |
---|
89 | <classname>boost::timed_read_write_mutex</classname> |
---|
90 | were added. |
---|
91 | |
---|
92 | <note>Since the read/write mutex and related classes are new, |
---|
93 | both interface and implementation are liable to change |
---|
94 | in future releases of &Boost.Threads;. |
---|
95 | The lock concepts and lock promotion in particular are |
---|
96 | still under discussion and very likely to change.</note> |
---|
97 | </para> |
---|
98 | </section> |
---|
99 | |
---|
100 | <section id="threads.release_notes.boost_1_32_0.change_log.thread_specific_ptr"> |
---|
101 | <title>Thread-specific pointer functionality changed</title> |
---|
102 | |
---|
103 | <para>The <classname>boost::thread_specific_ptr</classname> |
---|
104 | constructor now takes an optional pointer to a cleanup function that |
---|
105 | is called to release the thread-specific data that is being pointed |
---|
106 | to by <classname>boost::thread_specific_ptr</classname> objects.</para> |
---|
107 | |
---|
108 | <para>Fixed: the number of available thread-specific storage "slots" |
---|
109 | is too small on some platforms.</para> |
---|
110 | |
---|
111 | <para>Fixed: <functionname>thread_specific_ptr::reset()</functionname> |
---|
112 | doesn't check error returned by <functionname>tss::set()</functionname> |
---|
113 | (the <functionname>tss::set()</functionname> function now throws |
---|
114 | if it fails instead of returning an error code).</para> |
---|
115 | |
---|
116 | <para>Fixed: calling |
---|
117 | <functionname>boost::thread_specific_ptr::reset()</functionname> or |
---|
118 | <functionname>boost::thread_specific_ptr::release()</functionname> |
---|
119 | causes double-delete: once when |
---|
120 | <functionname>boost::thread_specific_ptr::reset()</functionname> or |
---|
121 | <functionname>boost::thread_specific_ptr::release()</functionname> |
---|
122 | is called and once when |
---|
123 | <functionname>boost::thread_specific_ptr::~thread_specific_ptr()</functionname> |
---|
124 | is called.</para> |
---|
125 | </section> |
---|
126 | |
---|
127 | <section id="threads.release_notes.boost_1_32_0.change_log.mutex"> |
---|
128 | <title>Mutex implementation changed for Win32</title> |
---|
129 | |
---|
130 | <para>On Win32, <classname>boost::mutex</classname>, |
---|
131 | <classname>boost::try_mutex</classname>, <classname>boost::recursive_mutex</classname>, |
---|
132 | and <classname>boost::recursive_try_mutex</classname> now use a Win32 critical section |
---|
133 | whenever possible; otherwise they use a Win32 mutex. As before, |
---|
134 | <classname>boost::timed_mutex</classname> and |
---|
135 | <classname>boost::recursive_timed_mutex</classname> use a Win32 mutex.</para> |
---|
136 | </section> |
---|
137 | |
---|
138 | <section id="threads.release_notes.boost_1_32_0.change_log.wince"> |
---|
139 | <title>Windows CE support improved</title> |
---|
140 | |
---|
141 | <para>Minor changes were made to make Boost.Threads work on Windows CE.</para> |
---|
142 | </section> |
---|
143 | </section> |
---|
144 | </section> |
---|