26c495e5b3
[SVN r80570]
75 lines
4.3 KiB
Plaintext
75 lines
4.3 KiB
Plaintext
[/
|
|
(C) Copyright 2007-12 Anthony Williams.
|
|
(C) Copyright 20012 Vicente J. Botet Escriba.
|
|
Distributed under the Boost Software License, Version 1.0.
|
|
(See accompanying file LICENSE_1_0.txt or copy at
|
|
http://www.boost.org/LICENSE_1_0.txt).
|
|
]
|
|
|
|
[section:overview Overview]
|
|
|
|
__boost_thread__ enables the use of multiple threads of execution with shared data in portable C++ code. It provides classes and
|
|
functions for managing the threads themselves, along with others for synchronizing data between the threads or providing separate
|
|
copies of data specific to individual threads.
|
|
|
|
The __boost_thread__ library was originally written and designed by William E. Kempf (version 1).
|
|
|
|
Anthony Williams version (version 2) was a major rewrite designed to
|
|
closely follow the proposals presented to the C++ Standards Committee, in particular
|
|
[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2497.html N2497],
|
|
[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2320.html N2320],
|
|
[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2184.html N2184],
|
|
[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2139.html N2139], and
|
|
[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2094.html N2094]
|
|
|
|
Vicente J. Botet Escriba started (version 3) the adaptation to comply with the accepted Thread C++11 library (Make use of Boost.Chrono and Boost.Move) and the [@http://home.roadrunner.com/~hinnant/bloomington/shared_mutex.html Shared Locking] Howard Hinnant proposal except for the upward conversions.
|
|
Some minor non-standard features have been added also as thread attributes, reverse_lock, shared_lock_guard.
|
|
|
|
In order to use the classes and functions described here, you can
|
|
either include the specific headers specified by the descriptions of
|
|
each class or function, or include the master thread library header:
|
|
|
|
#include <boost/thread.hpp>
|
|
|
|
which includes all the other headers in turn.
|
|
|
|
[endsect]
|
|
|
|
|
|
[section:build Using and building the library]
|
|
|
|
Boost.Thread is configured following the conventions used to build [@http://www.boost.org/doc/libs/1_48_0/libs/config/doc/html/boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code libraries with separate source code]. Boost.Thread will import/export the code only if the user has specifically asked for it, by defining either BOOST_ALL_DYN_LINK if they want all boost libraries to be dynamically linked, or BOOST_THREAD_DYN_LINK if they want just this one to be dynamically liked.
|
|
|
|
The definition of these macros determines whether BOOST_THREAD_USE_DLL is defined. If BOOST_THREAD_USE_DLL is not defined, the library will define BOOST_THREAD_USE_DLL or BOOST_THREAD_USE_LIB depending on whether the platform. On non windows platforms BOOST_THREAD_USE_LIB is defined if is not defined. In windows platforms, BOOST_THREAD_USE_LIB is defined if BOOST_THREAD_USE_DLL and the compiler supports auto-tss cleanup with Boost.Threads (for the time been Msvc and Intel)
|
|
|
|
The source code compiled when building the library defines a macros BOOST_THREAD_SOURCE that is used to import or export it. The user must not define this macro in any case.
|
|
|
|
Boost.Thread depends on some non header-only libraries.
|
|
|
|
* Boost.System: This dependency is mandatory and you will need to link with the library.
|
|
|
|
* Boost.Chrono: This dependency is optional (see below how to configure) and you will need to link with the library if you use some of the time related interfaces.
|
|
|
|
* Boost.DateTime: This dependency is mandatory, but even if Boost.DateTime is a non header-only library Boost.Thread uses only parts that are header-only, so in principle you should not need to link with the library.
|
|
|
|
It seems that there are some IDE (as e.g. Visual Studio) that deduce the libraries that a program needs to link to inspecting the sources. Such IDE could force to link to Boost.DateTime and/or Boost.Chrono.
|
|
|
|
As the single mandatory dependency is to Boost.System, the following
|
|
|
|
bjam toolset=msvc-11.0 --build-type=complete --with-thread
|
|
|
|
will install only boost_thread and boost_system.
|
|
|
|
Users of such IDE should force the Boost.Chrono and Boost.DateTime build using
|
|
|
|
bjam toolset=msvc-11.0 --build-type=complete --with-thread --with-chrono --with-date_time
|
|
|
|
|
|
The following section describes all the macros used to configure Boost.Thread.
|
|
|
|
[include configuration.qbk]
|
|
|
|
|
|
[endsect]
|
|
|