summaryrefslogtreecommitdiffstats
path: root/3rdparty/clucene/src/CLucene/config/threadPthread.h
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/clucene/src/CLucene/config/threadPthread.h')
-rw-r--r--3rdparty/clucene/src/CLucene/config/threadPthread.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/3rdparty/clucene/src/CLucene/config/threadPthread.h b/3rdparty/clucene/src/CLucene/config/threadPthread.h
new file mode 100644
index 000000000..d0ed9c4c9
--- /dev/null
+++ b/3rdparty/clucene/src/CLucene/config/threadPthread.h
@@ -0,0 +1,59 @@
+/*------------------------------------------------------------------------------
+* 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.
+------------------------------------------------------------------------------*/
+//NOTE: do not include this file directly, it is included from lucene internally.
+
+#ifndef lucene_config_threadPthread_h
+#define lucene_config_threadPthread_h
+
+#include <pthread.h>
+
+CL_NS_DEF(util)
+
+///a posix implementation of the lock mutex
+///todo: we need a spinlock implemenation for usage in reference counting
+class mutex_pthread
+{
+private:
+ pthread_mutex_t mtx;
+
+public:
+ mutex_pthread(const mutex_pthread& clone);
+ mutex_pthread();
+ ~mutex_pthread();
+ void lock();
+ void unlock();
+
+private:
+ #ifndef _CL_HAVE_PTHREAD_MUTEX_RECURSIVE
+ pthread_t lockOwner;
+ unsigned int lockCount;
+ #endif
+};
+
+#define _LUCENE_SLEEP(x) usleep(x*1000) //_LUCENE_SLEEP should be in millis, usleep is in micros
+#define _LUCENE_THREADMUTEX CL_NS(util)::mutex_pthread
+#define _LUCENE_CURRTHREADID pthread_self()
+#define _LUCENE_THREADID_TYPE pthread_t
+
+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()( pthread_t t1, pthread_t t2 ) const{
+ return t1 < t2;
+ }
+};
+
+
+CL_NS_END
+
+#endif //lucene_config_threadPthread_h