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:
syntheticpp 2005-07-31 14:00:48 +00:00
parent 7382c3dde0
commit 687c3682a7
6 changed files with 27 additions and 20 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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