Added threading models

[SVN r13824]
This commit is contained in:
Douglas Gregor
2002-05-11 15:44:38 +00:00
parent 9a4d7447a7
commit 5d7f4aae46
5 changed files with 132 additions and 1 deletions

View File

@ -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

View 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

View 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

View 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

View 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