summaryrefslogtreecommitdiff
path: root/boost/thread/scoped_thread.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/thread/scoped_thread.hpp')
-rw-r--r--boost/thread/scoped_thread.hpp38
1 files changed, 20 insertions, 18 deletions
diff --git a/boost/thread/scoped_thread.hpp b/boost/thread/scoped_thread.hpp
index c2da919728..6cda931a5f 100644
--- a/boost/thread/scoped_thread.hpp
+++ b/boost/thread/scoped_thread.hpp
@@ -34,10 +34,10 @@ namespace boost
* boost::strict_scoped_thread<> t((boost::thread(F)));
*
*/
- template <class CallableThread = join_if_joinable>
+ template <class CallableThread = join_if_joinable, class Thread=::boost::thread>
class strict_scoped_thread
{
- thread t_;
+ Thread t_;
struct dummy;
public:
@@ -47,13 +47,13 @@ namespace boost
*
*/
#if ! defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
- template <class F, class ...Args, typename = typename disable_if<is_same<typename decay<F>::type, thread>, void* >::type>
+ template <class F, class ...Args, typename = typename disable_if<is_same<typename decay<F>::type, Thread>, void* >::type>
explicit strict_scoped_thread(BOOST_THREAD_FWD_REF(F) f, BOOST_THREAD_FWD_REF(Args)... args) :
t_(boost::forward<F>(f), boost::forward<Args>(args)...) {}
#else
template <class F>
explicit strict_scoped_thread(BOOST_THREAD_FWD_REF(F) f,
- typename disable_if<is_same<typename decay<F>::type, thread>, void* >::type=0) :
+ typename disable_if<is_same<typename decay<F>::type, Thread>, void* >::type=0) :
t_(boost::forward<F>(f)) {}
template <class F, class A1>
strict_scoped_thread(BOOST_THREAD_FWD_REF(F) f, BOOST_THREAD_FWD_REF(A1) a1) :
@@ -73,7 +73,7 @@ namespace boost
*
* Effects: move the thread to own @c t.
*/
- explicit strict_scoped_thread(BOOST_THREAD_RV_REF(thread) t) BOOST_NOEXCEPT :
+ explicit strict_scoped_thread(BOOST_THREAD_RV_REF(Thread) t) BOOST_NOEXCEPT :
t_(boost::move(t))
{
}
@@ -111,14 +111,15 @@ namespace boost
* t.interrupt();
*
*/
- template <class CallableThread = join_if_joinable>
+ template <class CallableThread = join_if_joinable, class Thread=::boost::thread>
class scoped_thread
{
- thread t_;
+ Thread t_;
struct dummy;
public:
- typedef thread::id id;
+ typedef typename Thread::id id;
+ typedef typename Thread::native_handle_type native_handle_type;
BOOST_THREAD_MOVABLE_ONLY( scoped_thread) /// Movable only
@@ -137,13 +138,13 @@ namespace boost
*/
#if ! defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
- template <class F, class ...Args, typename = typename disable_if<is_same<typename decay<F>::type, thread>, void* >::type>
+ template <class F, class ...Args, typename = typename disable_if<is_same<typename decay<F>::type, Thread>, void* >::type>
explicit scoped_thread(BOOST_THREAD_FWD_REF(F) f, BOOST_THREAD_FWD_REF(Args)... args) :
t_(boost::forward<F>(f), boost::forward<Args>(args)...) {}
#else
template <class F>
explicit scoped_thread(BOOST_THREAD_FWD_REF(F) f,
- typename disable_if<is_same<typename decay<F>::type, thread>, void* >::type=0) :
+ typename disable_if<is_same<typename decay<F>::type, Thread>, void* >::type=0) :
t_(boost::forward<F>(f)) {}
template <class F, class A1>
scoped_thread(BOOST_THREAD_FWD_REF(F) f, BOOST_THREAD_FWD_REF(A1) a1) :
@@ -163,12 +164,12 @@ namespace boost
*
* Effects: move the thread to own @c t.
*/
- explicit scoped_thread(BOOST_THREAD_RV_REF(thread) t) BOOST_NOEXCEPT :
+ explicit scoped_thread(BOOST_THREAD_RV_REF(Thread) t) BOOST_NOEXCEPT :
t_(boost::move(t))
{
}
-// explicit operator thread()
+// explicit operator Thread()
// {
// return boost::move(t_);
// }
@@ -213,7 +214,7 @@ namespace boost
}
// forwarded thread functions
- inline thread::id get_id() const BOOST_NOEXCEPT
+ inline id get_id() const BOOST_NOEXCEPT
{
return t_.get_id();
}
@@ -242,7 +243,7 @@ namespace boost
}
#endif
- thread::native_handle_type native_handle()BOOST_NOEXCEPT
+ native_handle_type native_handle()BOOST_NOEXCEPT
{
return t_.native_handle();
}
@@ -266,13 +267,13 @@ namespace boost
static unsigned hardware_concurrency() BOOST_NOEXCEPT
{
- return thread::hardware_concurrency();
+ return Thread::hardware_concurrency();
}
#ifdef BOOST_THREAD_PROVIDES_PHYSICAL_CONCURRENCY
static unsigned physical_concurrency() BOOST_NOEXCEPT
{
- return thread::physical_concurrency();
+ return Thread::physical_concurrency();
}
#endif
};
@@ -280,12 +281,13 @@ namespace boost
/**
* Effects: swaps the contents of two scoped threads.
*/
- template <class Destroyer>
- void swap(scoped_thread<Destroyer>& lhs, scoped_thread<Destroyer>& rhs)
+ template <class Destroyer, class Thread >
+ void swap(scoped_thread<Destroyer, Thread>& lhs, scoped_thread<Destroyer, Thread>& rhs)
BOOST_NOEXCEPT {
return lhs.swap(rhs);
}
+ typedef scoped_thread<> joining_thread;
}
#include <boost/config/abi_suffix.hpp>