11#include <boost/thread/recursive_mutex.hpp>
12#include <boost/thread/mutex.hpp>
33 void lock(int32_t timeout = 0);
50 template <
class OBJECT>
52 this->sync =
object->getSync();
62 void lock(int32_t timeout);
66#define LUCENE_RUN_ONCE(Command) \
68 static std::atomic<bool> RUN_ONCE_hasRun = {}; \
69 if (!RUN_ONCE_hasRun) { \
70 static boost::mutex RUN_ONCE_mutex; \
71 boost::mutex::scoped_lock RUN_ONCE_lock(RUN_ONCE_mutex); \
72 if (!RUN_ONCE_hasRun) { \
74 RUN_ONCE_hasRun = true; \
Utility class to support scope locking.
Definition Synchronize.h:46
SyncLock(OBJECT object, int32_t timeout=0)
Definition Synchronize.h:51
SyncLock(const SynchronizePtr &sync, int32_t timeout=0)
SynchronizePtr sync
Definition Synchronize.h:59
void lock(int32_t timeout)
Utility class to support locking via a mutex.
Definition Synchronize.h:18
void unlock()
Unlock mutex.
int64_t lockThread
Definition Synchronize.h:25
static void createSync(SynchronizePtr &sync)
create a new Synchronize instance atomically.
boost::recursive_timed_mutex mutexSynchronize
Definition Synchronize.h:24
int32_t recursionCount
Definition Synchronize.h:26
bool holdsLock()
Returns true if mutex is currently locked by current thread.
void lock(int32_t timeout=0)
Lock mutex using an optional timeout.
int32_t unlockAll()
Unlock all recursive mutex.
Definition AbstractAllTermDocs.h:12
boost::shared_ptr< Synchronize > SynchronizePtr
Definition LuceneTypes.h:552