Flex  0.17.9
version_manager.h
Go to the documentation of this file.
1 
16 #ifndef GRAPHSCOPE_DATABASE_VERSION_MANAGER_H_
17 #define GRAPHSCOPE_DATABASE_VERSION_MANAGER_H_
18 
19 #include <assert.h>
20 #include <fcntl.h>
21 #include <unistd.h>
22 
23 #include <array>
24 #include <atomic>
25 #include <bitset>
26 #include <thread>
27 
28 #include "glog/logging.h"
29 #include "grape/utils/bitset.h"
30 #include "grape/utils/concurrent_queue.h"
31 
32 namespace gs {
33 
35  public:
38 
39  void init_ts(uint32_t ts, int thread_num);
40 
41  void clear();
42 
43  uint32_t acquire_read_timestamp();
44 
46 
47  uint32_t acquire_insert_timestamp();
48  void release_insert_timestamp(uint32_t ts);
49 
50  uint32_t acquire_update_timestamp();
51  void release_update_timestamp(uint32_t ts);
52  bool revert_update_timestamp(uint32_t ts);
53 
54  private:
55  std::atomic<uint32_t> write_ts_{1};
56  std::atomic<uint32_t> read_ts_{0};
57 
58  std::atomic<int> pending_reqs_{0};
59  std::atomic<int> pending_update_reqs_{0};
60 
61  grape::Bitset buf_;
62  grape::SpinLock lock_;
63 
65 };
66 
67 } // namespace gs
68 
69 #endif // GRAPHSCOPE_DATABASE_VERSION_MANAGER_H_
Definition: version_manager.h:34
bool revert_update_timestamp(uint32_t ts)
Definition: version_manager.cc:133
grape::SpinLock lock_
Definition: version_manager.h:62
uint32_t acquire_read_timestamp()
Definition: version_manager.cc:44
void clear()
Definition: version_manager.cc:37
uint32_t acquire_update_timestamp()
Definition: version_manager.cc:101
std::atomic< int > pending_update_reqs_
Definition: version_manager.h:59
grape::Bitset buf_
Definition: version_manager.h:61
void release_read_timestamp()
Definition: version_manager.cc:64
VersionManager()
Definition: version_manager.cc:27
~VersionManager()
Definition: version_manager.cc:29
void init_ts(uint32_t ts, int thread_num)
Definition: version_manager.cc:31
std::atomic< uint32_t > read_ts_
Definition: version_manager.h:56
std::atomic< int > pending_reqs_
Definition: version_manager.h:58
void release_update_timestamp(uint32_t ts)
Definition: version_manager.cc:118
int thread_num_
Definition: version_manager.h:64
std::atomic< uint32_t > write_ts_
Definition: version_manager.h:55
uint32_t acquire_insert_timestamp()
Definition: version_manager.cc:66
void release_insert_timestamp(uint32_t ts)
Definition: version_manager.cc:86
Definition: adj_list.h:23