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 Parm15;
|
||||
|
||||
FunctorImplBase(){};
|
||||
FunctorImplBase(const FunctorImplBase&){};
|
||||
inline FunctorImplBase(){};
|
||||
inline FunctorImplBase(const FunctorImplBase&){};
|
||||
|
||||
virtual FunctorImplBase* DoClone() const = 0;
|
||||
template <class U>
|
||||
|
@ -87,7 +87,7 @@ namespace Loki
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <typename R, class TList,
|
||||
template <class> class ThreadingModel = DEFAULT_THREADING>
|
||||
template <class> class ThreadingModel = DEFAULT_THREADING_NO_OBJ_LEVEL>
|
||||
class FunctorImpl;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -720,7 +720,7 @@ namespace Loki
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <typename R, class TList = NullType,
|
||||
template<class> class ThreadingModel = DEFAULT_THREADING>
|
||||
template<class> class ThreadingModel = DEFAULT_THREADING_NO_OBJ_LEVEL>
|
||||
class Functor
|
||||
{
|
||||
public:
|
||||
|
|
|
@ -29,9 +29,6 @@
|
|||
#define C_CALLING_CONVENTION_QUALIFIER
|
||||
#endif
|
||||
|
||||
#ifndef SINGLETON_DEFAULT_THREADING
|
||||
#define SINGLETON_DEFAULT_THREADING ::Loki::SingleThreaded
|
||||
#endif
|
||||
|
||||
namespace Loki
|
||||
{
|
||||
|
@ -341,7 +338,7 @@ namespace Loki
|
|||
typename T,
|
||||
template <class> class CreationPolicy = CreateUsingNew,
|
||||
template <class> class LifetimePolicy = DefaultLifetime,
|
||||
template <class> class ThreadingModel = SINGLETON_DEFAULT_THREADING
|
||||
template <class> class ThreadingModel = DEFAULT_THREADING_NO_OBJ_LEVEL
|
||||
>
|
||||
class SingletonHolder
|
||||
{
|
||||
|
|
|
@ -204,7 +204,7 @@ namespace Loki
|
|||
|
||||
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 maxSmallObjectSize = MAX_SMALL_OBJECT_SIZE,
|
||||
std::size_t objectAlignSize = LOKI_DEFAULT_OBJECT_ALIGNMENT,
|
||||
|
@ -235,7 +235,7 @@ namespace Loki
|
|||
|
||||
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 maxSmallObjectSize = MAX_SMALL_OBJECT_SIZE,
|
||||
std::size_t objectAlignSize = LOKI_DEFAULT_OBJECT_ALIGNMENT,
|
||||
|
@ -262,6 +262,9 @@ namespace Loki
|
|||
#endif // SMALLOBJ_INC_
|
||||
|
||||
// $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
|
||||
// replace old implementation with the ingeious from Rich Sposato
|
||||
//
|
||||
|
|
|
@ -12,10 +12,10 @@
|
|||
// $Header$
|
||||
|
||||
|
||||
#if defined(CLASS_LEVEL_THREADING) || defined(OBJECT_LEVEL_THREADING)
|
||||
// threads only on windows
|
||||
#include <windows.h>
|
||||
#define SINGLETON_DEFAULT_THREADING ::Loki::ClassLevelLockable
|
||||
#if defined(_WIN32) && (defined(CLASS_LEVEL_THREADING) || defined(OBJECT_LEVEL_THREADING))
|
||||
// threads only on windows
|
||||
#include <windows.h>
|
||||
#define DEFAULT_THREADING_NO_OBJ_LEVEL ::Loki::ClassLevelLockable
|
||||
#if defined(CLASS_LEVEL_THREADING)
|
||||
#define DEFAULT_THREADING ::Loki::ClassLevelLockable
|
||||
#else
|
||||
|
@ -23,6 +23,7 @@
|
|||
#endif
|
||||
#else
|
||||
#define DEFAULT_THREADING ::Loki::SingleThreaded
|
||||
#define DEFAULT_THREADING_NO_OBJ_LEVEL ::Loki::SingleThreaded
|
||||
#endif
|
||||
|
||||
#include <cassert>
|
||||
|
@ -76,6 +77,7 @@ namespace Loki
|
|||
|
||||
#if defined(_WINDOWS_) || defined(_WINDOWS_H)
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// class template ObjectLevelLockable
|
||||
// Implementation of the ThreadingModel policy used by various classes
|
||||
|
@ -224,6 +226,9 @@ namespace Loki
|
|||
#endif
|
||||
|
||||
// $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
|
||||
// add cvs Header/Log
|
||||
//
|
||||
|
|
|
@ -76,8 +76,7 @@ namespace
|
|||
typedef SingletonHolder<MyClass<19>, CreateStatic, SingletonWithLongevity, SingleThreaded> t19;
|
||||
typedef SingletonHolder<MyClass<20>, CreateStatic, NoDestroy, SingleThreaded> t20;
|
||||
|
||||
//#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && !defined(__MWERKS__)
|
||||
#if defined(_WINDOWS_) || defined(_WINDOWS_H) // && defined(__WIN32)
|
||||
#if defined(_WINDOWS_) || defined(_WINDOWS_H)
|
||||
|
||||
typedef SingletonHolder<MyClass<5>, CreateUsingNew, DefaultLifetime, ClassLevelLockable> t5;
|
||||
typedef SingletonHolder<MyClass<6>, CreateUsingNew, PhoenixSingleton, ClassLevelLockable> t6;
|
||||
|
@ -127,8 +126,8 @@ public:
|
|||
MAKE_TEST(t19)
|
||||
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(t6)
|
||||
|
|
|
@ -19,7 +19,8 @@
|
|||
# pragma warning(disable: 4018 4097 4100 4213 4290 4512 4514 4700 4702 4710 4786 4800)
|
||||
#endif
|
||||
|
||||
#define CLASS_LEVEL_THREADING
|
||||
//#define CLASS_LEVEL_THREADING
|
||||
#define OBJECT_LEVEL_THREADING
|
||||
|
||||
// Some platforms might have difficulty with this
|
||||
// Need to ifdef around those cases.
|
||||
|
@ -108,7 +109,9 @@ return result;
|
|||
|
||||
|
||||
// $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
|
||||
// add cvs Header/Log
|
||||
//
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue