17 #ifndef GNSS_SDR_CONCURRENT_MAP_H 18 #define GNSS_SDR_CONCURRENT_MAP_H 30 template <
typename Data>
39 typedef typename std::map<int, Data>::iterator Data_iterator;
41 void write(
int key, Data
const& data)
43 std::unique_lock<std::mutex> lock(the_mutex);
44 Data_iterator data_iter;
45 data_iter = the_map.find(key);
46 if (data_iter != the_map.end())
48 data_iter->second = data;
52 the_map.insert(std::pair<int, Data>(key, data));
57 std::map<int, Data> get_map_copy()
59 std::unique_lock<std::mutex> lock(the_mutex);
60 std::map<int, Data> map_aux = the_map;
67 std::unique_lock<std::mutex> lock(the_mutex);
68 size_t size_ = the_map.size();
73 bool read(
int key, Data& p_data)
75 std::unique_lock<std::mutex> lock(the_mutex);
76 Data_iterator data_iter;
77 data_iter = the_map.find(key);
78 if (data_iter != the_map.end())
80 p_data = data_iter->second;
89 std::map<int, Data> the_map;
90 mutable std::mutex the_mutex;
96 #endif // GNSS_SDR_CONCURRENT_MAP_H This class implements a thread-safe std::map.