CppCMS
atomic_counter.h
1 //
2 // Copyright (C) 2009-2012 Artyom Beilis (Tonkikh)
3 //
4 // Distributed under the Boost Software License, Version 1.0. (See
5 // accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt)
7 //
8 #ifndef BOOSTER_ATOMIC_COUNT_H
9 #define BOOSTER_ATOMIC_COUNT_H
10 
11 #include <booster/config.h>
12 #include <atomic>
13 
14 
19 namespace booster {
20 
24 
25  class BOOSTER_API atomic_counter {
26  public:
30  explicit atomic_counter( long v );
31  ~atomic_counter();
32 
36  long operator++()
37  {
38  return inc();
39  }
43  long operator--()
44  {
45  return dec();
46  }
50  operator long() const
51  {
52  return get();
53  }
54  private:
55  long inc();
56  long dec();
57  long get() const;
58 
59  atomic_counter(atomic_counter const &) = delete;
60  atomic_counter & operator=(atomic_counter const &) = delete;
61 
62  std::atomic_long value_;
63  };
64 
65 } // booster
66 
67 #endif
68 
69 
long operator++()
Definition: atomic_counter.h:36
long operator--()
Definition: atomic_counter.h:43
Booster library namespace. The library that implements Boost Like API in ABI backward compatible way...
Definition: application.h:23
Atomic counter is a class that allows perform counting in thread safe way.
Definition: atomic_counter.h:25