gloox  1.0.28
atomicrefcount.h
1 /*
2  Copyright (c) 2007-2023 by Jakob Schröter <js@camaya.net>
3  This file is part of the gloox library. http://camaya.net/gloox
4 
5  This software is distributed under a license. The full license
6  agreement can be found in the file LICENSE in this distribution.
7  This software may not be copied, modified, sold or distributed
8  other than expressed in the named license agreement.
9 
10  This software is distributed without any warranty.
11 */
12 
13 
14 #ifndef ATOMICREFCOUNT_H__
15 #define ATOMICREFCOUNT_H__
16 
17 #include "macros.h"
18 #include "mutex.h"
19 
20 namespace gloox
21 {
22 
23  namespace util
24  {
34  class GLOOX_API AtomicRefCount
35  {
36  public:
41 
46  int increment();
47 
52  int decrement();
53 
58  void reset();
59 
60  private:
61  AtomicRefCount& operator=( const AtomicRefCount& );
62 
63  volatile int m_count;
64 
65  // The mutex is only used if a native function is unavailable.
66  Mutex m_lock;
67 
68  };
69 
70  }
71 
72 }
73 
74 #endif // ATOMICREFCOUNT_H__
75 
A simple implementation of a thread safe 32-bit reference count. Native functions are used where poss...
A simple implementation of mutex as a wrapper around a pthread mutex or a win32 critical section.
Definition: mutex.h:34
The namespace for the gloox library.
Definition: adhoc.cpp:28