pvAccessCPP  7.1.7
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
referenceCountingLock.h
1 
7 #ifndef REFERENCECOUNTINGLOCK_H
8 #define REFERENCECOUNTINGLOCK_H
9 
10 #ifdef epicsExportSharedSymbols
11 # define referenceCountingLockEpicsExportSharedSymbols
12 # undef epicsExportSharedSymbols
13 #endif
14 
15 #include <pv/lock.h>
16 #include <pv/pvType.h>
17 #include <pv/sharedPtr.h>
18 
19 #ifdef referenceCountingLockEpicsExportSharedSymbols
20 # define epicsExportSharedSymbols
21 # undef referenceCountingLockEpicsExportSharedSymbols
22 #endif
23 
24 namespace epics {
25 namespace pvAccess {
26 
36 {
37 public:
38  POINTER_DEFINITIONS(ReferenceCountingLock);
39 
48  virtual ~ReferenceCountingLock();
62  bool acquire(epics::pvData::int64 msecs);
66  void release();
72  int increment();
78  int decrement();
79 private:
80  int _references;
81  epics::pvData::Mutex _mutex;
82  epics::pvData::Mutex _countMutex;
83 };
84 
85 }
86 }
87 
88 #endif /* REFERENCECOUNTINGLOCK_H */
void release()
Release previously acquired lock.
virtual ~ReferenceCountingLock()
Destructor of ReferenceCountingLock.
ReferenceCountingLock()
Constructor of ReferenceCountingLock.
Reference counting mutex implementation w/ deadlock detection.
bool acquire(epics::pvData::int64 msecs)
Attempt to acquire lock.
int decrement()
Decrement number of references.
int increment()
Increment number of references.