Lucene++ - a full-featured, c++ search engine
API Documentation


 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Synchronize.h
Go to the documentation of this file.
1 // Copyright (c) 2009-2011 Alan Wright. All rights reserved.
3 // Distributable under the terms of either the Apache License (Version 2.0)
4 // or the GNU Lesser General Public License.
6 
7 #ifndef SYNCHRONIZE_H
8 #define SYNCHRONIZE_H
9 
10 #include <boost/thread/recursive_mutex.hpp>
11 #include "Lucene.h"
12 
13 namespace Lucene
14 {
16  class LPPAPI Synchronize
17  {
18  public:
19  Synchronize();
20  virtual ~Synchronize();
21 
22  protected:
23  boost::recursive_timed_mutex mutexSynchronize;
24  int64_t lockThread;
25  int32_t recursionCount;
26 
27  public:
29  static void createSync(SynchronizePtr& sync);
30 
32  void lock(int32_t timeout = 0);
33 
35  void unlock();
36 
38  int32_t unlockAll();
39 
41  bool holdsLock();
42  };
43 
45  class LPPAPI SyncLock
46  {
47  public:
48  SyncLock(SynchronizePtr sync, int32_t timeout = 0);
49 
50  template <class OBJECT>
51  SyncLock(OBJECT object, int32_t timeout = 0)
52  {
53  this->sync = object->getSync();
54  lock(timeout);
55  }
56 
57  virtual ~SyncLock();
58 
59  protected:
61 
62  protected:
63  void lock(int32_t timeout);
64  };
65 }
66 
67 #endif

clucene.sourceforge.net