make object level threading possible
git-svn-id: svn://svn.code.sf.net/p/loki-lib/code/trunk@201 7ec92016-0320-0410-acc4-a06ded1c099a
This commit is contained in:
parent
7382c3dde0
commit
687c3682a7
6 changed files with 27 additions and 20 deletions
|
@ -54,8 +54,8 @@ namespace Loki
|
||||||
typedef EmptyType Parm14;
|
typedef EmptyType Parm14;
|
||||||
typedef EmptyType Parm15;
|
typedef EmptyType Parm15;
|
||||||
|
|
||||||
FunctorImplBase(){};
|
inline FunctorImplBase(){};
|
||||||
FunctorImplBase(const FunctorImplBase&){};
|
inline FunctorImplBase(const FunctorImplBase&){};
|
||||||
|
|
||||||
virtual FunctorImplBase* DoClone() const = 0;
|
virtual FunctorImplBase* DoClone() const = 0;
|
||||||
template <class U>
|
template <class U>
|
||||||
|
@ -87,7 +87,7 @@ namespace Loki
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
template <typename R, class TList,
|
template <typename R, class TList,
|
||||||
template <class> class ThreadingModel = DEFAULT_THREADING>
|
template <class> class ThreadingModel = DEFAULT_THREADING_NO_OBJ_LEVEL>
|
||||||
class FunctorImpl;
|
class FunctorImpl;
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -720,7 +720,7 @@ namespace Loki
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
template <typename R, class TList = NullType,
|
template <typename R, class TList = NullType,
|
||||||
template<class> class ThreadingModel = DEFAULT_THREADING>
|
template<class> class ThreadingModel = DEFAULT_THREADING_NO_OBJ_LEVEL>
|
||||||
class Functor
|
class Functor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -29,9 +29,6 @@
|
||||||
#define C_CALLING_CONVENTION_QUALIFIER
|
#define C_CALLING_CONVENTION_QUALIFIER
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef SINGLETON_DEFAULT_THREADING
|
|
||||||
#define SINGLETON_DEFAULT_THREADING ::Loki::SingleThreaded
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace Loki
|
namespace Loki
|
||||||
{
|
{
|
||||||
|
@ -341,7 +338,7 @@ namespace Loki
|
||||||
typename T,
|
typename T,
|
||||||
template <class> class CreationPolicy = CreateUsingNew,
|
template <class> class CreationPolicy = CreateUsingNew,
|
||||||
template <class> class LifetimePolicy = DefaultLifetime,
|
template <class> class LifetimePolicy = DefaultLifetime,
|
||||||
template <class> class ThreadingModel = SINGLETON_DEFAULT_THREADING
|
template <class> class ThreadingModel = DEFAULT_THREADING_NO_OBJ_LEVEL
|
||||||
>
|
>
|
||||||
class SingletonHolder
|
class SingletonHolder
|
||||||
{
|
{
|
||||||
|
|
|
@ -204,7 +204,7 @@ namespace Loki
|
||||||
|
|
||||||
template
|
template
|
||||||
<
|
<
|
||||||
template <class> class ThreadingModel = DEFAULT_THREADING,
|
template <class> class ThreadingModel = DEFAULT_THREADING_NO_OBJ_LEVEL,
|
||||||
std::size_t chunkSize = DEFAULT_CHUNK_SIZE,
|
std::size_t chunkSize = DEFAULT_CHUNK_SIZE,
|
||||||
std::size_t maxSmallObjectSize = MAX_SMALL_OBJECT_SIZE,
|
std::size_t maxSmallObjectSize = MAX_SMALL_OBJECT_SIZE,
|
||||||
std::size_t objectAlignSize = LOKI_DEFAULT_OBJECT_ALIGNMENT,
|
std::size_t objectAlignSize = LOKI_DEFAULT_OBJECT_ALIGNMENT,
|
||||||
|
@ -235,7 +235,7 @@ namespace Loki
|
||||||
|
|
||||||
template
|
template
|
||||||
<
|
<
|
||||||
template <class> class ThreadingModel = DEFAULT_THREADING,
|
template <class> class ThreadingModel = DEFAULT_THREADING_NO_OBJ_LEVEL,
|
||||||
std::size_t chunkSize = DEFAULT_CHUNK_SIZE,
|
std::size_t chunkSize = DEFAULT_CHUNK_SIZE,
|
||||||
std::size_t maxSmallObjectSize = MAX_SMALL_OBJECT_SIZE,
|
std::size_t maxSmallObjectSize = MAX_SMALL_OBJECT_SIZE,
|
||||||
std::size_t objectAlignSize = LOKI_DEFAULT_OBJECT_ALIGNMENT,
|
std::size_t objectAlignSize = LOKI_DEFAULT_OBJECT_ALIGNMENT,
|
||||||
|
@ -262,6 +262,9 @@ namespace Loki
|
||||||
#endif // SMALLOBJ_INC_
|
#endif // SMALLOBJ_INC_
|
||||||
|
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.3 2005/07/31 14:00:48 syntheticpp
|
||||||
|
// make object level threading possible
|
||||||
|
//
|
||||||
// Revision 1.2 2005/07/31 13:51:31 syntheticpp
|
// Revision 1.2 2005/07/31 13:51:31 syntheticpp
|
||||||
// replace old implementation with the ingeious from Rich Sposato
|
// replace old implementation with the ingeious from Rich Sposato
|
||||||
//
|
//
|
||||||
|
|
|
@ -12,10 +12,10 @@
|
||||||
// $Header$
|
// $Header$
|
||||||
|
|
||||||
|
|
||||||
#if defined(CLASS_LEVEL_THREADING) || defined(OBJECT_LEVEL_THREADING)
|
#if defined(_WIN32) && (defined(CLASS_LEVEL_THREADING) || defined(OBJECT_LEVEL_THREADING))
|
||||||
// threads only on windows
|
// threads only on windows
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#define SINGLETON_DEFAULT_THREADING ::Loki::ClassLevelLockable
|
#define DEFAULT_THREADING_NO_OBJ_LEVEL ::Loki::ClassLevelLockable
|
||||||
#if defined(CLASS_LEVEL_THREADING)
|
#if defined(CLASS_LEVEL_THREADING)
|
||||||
#define DEFAULT_THREADING ::Loki::ClassLevelLockable
|
#define DEFAULT_THREADING ::Loki::ClassLevelLockable
|
||||||
#else
|
#else
|
||||||
|
@ -23,6 +23,7 @@
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
#define DEFAULT_THREADING ::Loki::SingleThreaded
|
#define DEFAULT_THREADING ::Loki::SingleThreaded
|
||||||
|
#define DEFAULT_THREADING_NO_OBJ_LEVEL ::Loki::SingleThreaded
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
@ -76,6 +77,7 @@ namespace Loki
|
||||||
|
|
||||||
#if defined(_WINDOWS_) || defined(_WINDOWS_H)
|
#if defined(_WINDOWS_) || defined(_WINDOWS_H)
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// class template ObjectLevelLockable
|
// class template ObjectLevelLockable
|
||||||
// Implementation of the ThreadingModel policy used by various classes
|
// Implementation of the ThreadingModel policy used by various classes
|
||||||
|
@ -224,6 +226,9 @@ namespace Loki
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.12 2005/07/31 14:00:48 syntheticpp
|
||||||
|
// make object level threading possible
|
||||||
|
//
|
||||||
// Revision 1.11 2005/07/28 14:26:09 syntheticpp
|
// Revision 1.11 2005/07/28 14:26:09 syntheticpp
|
||||||
// add cvs Header/Log
|
// add cvs Header/Log
|
||||||
//
|
//
|
||||||
|
|
|
@ -76,8 +76,7 @@ namespace
|
||||||
typedef SingletonHolder<MyClass<19>, CreateStatic, SingletonWithLongevity, SingleThreaded> t19;
|
typedef SingletonHolder<MyClass<19>, CreateStatic, SingletonWithLongevity, SingleThreaded> t19;
|
||||||
typedef SingletonHolder<MyClass<20>, CreateStatic, NoDestroy, SingleThreaded> t20;
|
typedef SingletonHolder<MyClass<20>, CreateStatic, NoDestroy, SingleThreaded> t20;
|
||||||
|
|
||||||
//#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && !defined(__MWERKS__)
|
#if defined(_WINDOWS_) || defined(_WINDOWS_H)
|
||||||
#if defined(_WINDOWS_) || defined(_WINDOWS_H) // && defined(__WIN32)
|
|
||||||
|
|
||||||
typedef SingletonHolder<MyClass<5>, CreateUsingNew, DefaultLifetime, ClassLevelLockable> t5;
|
typedef SingletonHolder<MyClass<5>, CreateUsingNew, DefaultLifetime, ClassLevelLockable> t5;
|
||||||
typedef SingletonHolder<MyClass<6>, CreateUsingNew, PhoenixSingleton, ClassLevelLockable> t6;
|
typedef SingletonHolder<MyClass<6>, CreateUsingNew, PhoenixSingleton, ClassLevelLockable> t6;
|
||||||
|
@ -127,8 +126,8 @@ public:
|
||||||
MAKE_TEST(t19)
|
MAKE_TEST(t19)
|
||||||
MAKE_TEST(t20)
|
MAKE_TEST(t20)
|
||||||
|
|
||||||
//#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && !defined(__MWERKS__)
|
|
||||||
#if defined(_WINDOWS_) || defined(_WINDOWS_H) // && defined(__WIN32)
|
#if defined(_WINDOWS_) || defined(_WINDOWS_H)
|
||||||
|
|
||||||
MAKE_TEST(t5)
|
MAKE_TEST(t5)
|
||||||
MAKE_TEST(t6)
|
MAKE_TEST(t6)
|
||||||
|
|
|
@ -19,7 +19,8 @@
|
||||||
# pragma warning(disable: 4018 4097 4100 4213 4290 4512 4514 4700 4702 4710 4786 4800)
|
# pragma warning(disable: 4018 4097 4100 4213 4290 4512 4514 4700 4702 4710 4786 4800)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CLASS_LEVEL_THREADING
|
//#define CLASS_LEVEL_THREADING
|
||||||
|
#define OBJECT_LEVEL_THREADING
|
||||||
|
|
||||||
// Some platforms might have difficulty with this
|
// Some platforms might have difficulty with this
|
||||||
// Need to ifdef around those cases.
|
// Need to ifdef around those cases.
|
||||||
|
@ -108,7 +109,9 @@ return result;
|
||||||
|
|
||||||
|
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.15 2005/07/31 14:00:48 syntheticpp
|
||||||
|
// make object level threading possible
|
||||||
|
//
|
||||||
// Revision 1.14 2005/07/28 14:26:10 syntheticpp
|
// Revision 1.14 2005/07/28 14:26:10 syntheticpp
|
||||||
// add cvs Header/Log
|
// add cvs Header/Log
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue