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

View file

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

View file

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

View file

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

View file

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

View file

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