forked from boostorg/function
Added threading models
[SVN r13824]
This commit is contained in:
@ -24,7 +24,7 @@
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/type_traits.hpp>
|
||||
#include <boost/ref.hpp>
|
||||
#include <boost/thread/model/single.hpp>
|
||||
#include <boost/function/threading/single.hpp>
|
||||
#include <boost/pending/ct_if.hpp>
|
||||
|
||||
#if defined(BOOST_MSVC) && BOOST_MSVC <= 1300 || defined(__ICL) && __ICL <= 600 || defined(__MWERKS__) && __MWERKS__ < 0x2406
|
||||
|
48
include/boost/function/threading/detail/mutex_mixin.hpp
Normal file
48
include/boost/function/threading/detail/mutex_mixin.hpp
Normal file
@ -0,0 +1,48 @@
|
||||
// Copyright (C) 2002
|
||||
// Doug Gregor (gregod@cs.rpi.edu)
|
||||
//
|
||||
// Permission to use, copy, modify, distribute and sell this software
|
||||
// and its documentation for any purpose is hereby granted without fee,
|
||||
// provided that the above copyright notice appear in all copies and
|
||||
// that both that copyright notice and this permission notice appear
|
||||
// in supporting documentation. William E. Kempf makes no representations
|
||||
// about the suitability of this software for any purpose.
|
||||
// It is provided "as is" without express or implied warranty.
|
||||
#ifndef BOOST_THREAD_MODEL_DETAIL_MUTEX_MIXIN_HPP
|
||||
#define BOOST_THREAD_MODEL_DETAIL_MUTEX_MIXIN_HPP
|
||||
|
||||
namespace boost {
|
||||
namespace detail {
|
||||
|
||||
template<typename Mutex>
|
||||
class mutex_mixin
|
||||
{
|
||||
public:
|
||||
mutex_mixin(const mutex_mixin&) {}
|
||||
mutex_mixin& operator=(const mutex_mixin&) { return *this; }
|
||||
|
||||
operator const Mutex&() const { return mutex; }
|
||||
operator Mutex&() { return mutex; }
|
||||
|
||||
private:
|
||||
Mutex mutex;
|
||||
};
|
||||
|
||||
template<typename Mutex>
|
||||
class static_mutex_mixin
|
||||
{
|
||||
public:
|
||||
static_mutex_mixin(const mutex_mixin&) {}
|
||||
static_mutex_mixin& operator=(const mutex_mixin&) { return *this; }
|
||||
|
||||
operator const Mutex&() const { return mutex; }
|
||||
operator Mutex&() { return mutex; }
|
||||
|
||||
private:
|
||||
static Mutex mutex;
|
||||
};
|
||||
|
||||
} // end namespace detail
|
||||
} // end namespace boost
|
||||
|
||||
#endif // BOOST_THREAD_MODEL_DETAIL_MUTEX_MIXIN_HPP
|
28
include/boost/function/threading/per_class.hpp
Normal file
28
include/boost/function/threading/per_class.hpp
Normal file
@ -0,0 +1,28 @@
|
||||
// Copyright (C) 2002
|
||||
// Doug Gregor (gregod@cs.rpi.edu)
|
||||
//
|
||||
// Permission to use, copy, modify, distribute and sell this software
|
||||
// and its documentation for any purpose is hereby granted without fee,
|
||||
// provided that the above copyright notice appear in all copies and
|
||||
// that both that copyright notice and this permission notice appear
|
||||
// in supporting documentation. William E. Kempf makes no representations
|
||||
// about the suitability of this software for any purpose.
|
||||
// It is provided "as is" without express or implied warranty.
|
||||
#ifndef BOOST_THREAD_MODEL_PER_CLASS_HPP
|
||||
#define BOOST_THREAD_MODEL_PER_CLASS_HPP
|
||||
|
||||
#include <boost/thread/mutex.hpp>
|
||||
#include <boost/thread/model/detail/mutex_mixin.hpp>
|
||||
|
||||
namespace boost {
|
||||
|
||||
template<typename Mutex = boost::mutex>
|
||||
struct per_class_locking
|
||||
{
|
||||
typedef detail::static_mutex_mixin<Mutex> mixin;
|
||||
typedef typename Mutex::scoped_lock lock;
|
||||
};
|
||||
|
||||
} // end namespace boost
|
||||
|
||||
#endif // BOOST_THREAD_MODEL_PER_CLASS_HPP
|
28
include/boost/function/threading/per_object.hpp
Normal file
28
include/boost/function/threading/per_object.hpp
Normal file
@ -0,0 +1,28 @@
|
||||
// Copyright (C) 2002
|
||||
// Doug Gregor (gregod@cs.rpi.edu)
|
||||
//
|
||||
// Permission to use, copy, modify, distribute and sell this software
|
||||
// and its documentation for any purpose is hereby granted without fee,
|
||||
// provided that the above copyright notice appear in all copies and
|
||||
// that both that copyright notice and this permission notice appear
|
||||
// in supporting documentation. William E. Kempf makes no representations
|
||||
// about the suitability of this software for any purpose.
|
||||
// It is provided "as is" without express or implied warranty.
|
||||
#ifndef BOOST_THREAD_MODEL_PER_OBJECT_HPP
|
||||
#define BOOST_THREAD_MODEL_PER_OBJECT_HPP
|
||||
|
||||
#include <boost/thread/mutex.hpp>
|
||||
#include <boost/thread/model/detail/mutex_mixin.hpp>
|
||||
|
||||
namespace boost {
|
||||
|
||||
template<typename Mutex = boost::mutex>
|
||||
struct per_object_locking
|
||||
{
|
||||
typedef detail::mutex_mixin<Mutex> mixin;
|
||||
typedef typename Mutex::scoped_lock lock;
|
||||
};
|
||||
|
||||
} // end namespace boost
|
||||
|
||||
#endif // BOOST_THREAD_MODEL_PER_OBJECT_HPP
|
27
include/boost/function/threading/single.hpp
Normal file
27
include/boost/function/threading/single.hpp
Normal file
@ -0,0 +1,27 @@
|
||||
// Copyright (C) 2002
|
||||
// Doug Gregor (gregod@cs.rpi.edu)
|
||||
//
|
||||
// Permission to use, copy, modify, distribute and sell this software
|
||||
// and its documentation for any purpose is hereby granted without fee,
|
||||
// provided that the above copyright notice appear in all copies and
|
||||
// that both that copyright notice and this permission notice appear
|
||||
// in supporting documentation. William E. Kempf makes no representations
|
||||
// about the suitability of this software for any purpose.
|
||||
// It is provided "as is" without express or implied warranty.
|
||||
#ifndef BOOST_THREAD_MODEL_SINGLE_HPP
|
||||
#define BOOST_THREAD_MODEL_SINGLE_HPP
|
||||
|
||||
namespace boost {
|
||||
|
||||
struct single_threaded {
|
||||
struct mixin {};
|
||||
|
||||
struct lock
|
||||
{
|
||||
lock(const mixin&) {}
|
||||
};
|
||||
};
|
||||
|
||||
} // end namespace boost
|
||||
|
||||
#endif // BOOST_THREAD_MODEL_SINGLE_HPP
|
Reference in New Issue
Block a user