blob: cad07869f4ab55bb51c71367c1adb038ef313351 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
/*------------------------------------------------------------------------------
* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
*
* Distributable under the terms of either the Apache License (Version 2.0) or
* the GNU Lesser General Public License, as specified in the COPYING file.
------------------------------------------------------------------------------*/
#ifndef _LuceneThreads_h
#define _LuceneThreads_h
#if defined(_LUCENE_PRAGMA_ONCE)
# pragma once
#endif
#if defined(_CL_DISABLE_MULTITHREADING)
#define SCOPED_LOCK_MUTEX(theMutex)
#define DEFINE_MUTEX(x)
#define STATIC_DEFINE_MUTEX(x)
#define _LUCENE_SLEEP(x)
#define _LUCENE_CURRTHREADID 1
#define _LUCENE_THREADID_TYPE char
CL_NS_DEF(util)
class CLuceneThreadIdCompare
{
public:
enum
{ // parameters for hash table
bucket_size = 4, // 0 < bucket_size
min_buckets = 8
}; // min_buckets = 2 ^^ N, 0 < N
bool operator()( char t1, char t2 ) const{
return t1 < t2;
}
};
CL_NS_END
#else
#if defined(_LUCENE_DONTIMPLEMENT_THREADMUTEX)
//do nothing
#elif defined(_CL_HAVE_PTHREAD)
#include "CLucene/config/threadPthread.h"
#elif defined(_CL_HAVE_WIN32_THREADS) || defined(_CLCOMPILER_MSVC) || defined(__MINGW32__) //note that mingw32 could have pthreads, so put this after.
#if !defined(_CL_HAVE_WIN32_THREADS)
#define _CL_HAVE_WIN32_THREADS
#endif
#include "CLucene/config/threadCSection.h"
#else
#error A valid thread library was not found
#endif //mutex types
CL_NS_DEF(util)
/** @internal */
class mutexGuard
{
private:
_LUCENE_THREADMUTEX* mrMutex;
mutexGuard(const mutexGuard& clone);
public:
mutexGuard( _LUCENE_THREADMUTEX& rMutex );
~mutexGuard();
};
CL_NS_END
#define SCOPED_LOCK_MUTEX(theMutex) CL_NS(util)::mutexGuard theMutexGuard(theMutex);
#define DEFINE_MUTEX(theMutex) _LUCENE_THREADMUTEX theMutex;
#define STATIC_DEFINE_MUTEX(theMutex) static _LUCENE_THREADMUTEX theMutex;
#endif //_CL_DISABLE_MULTITHREADING
#endif
|