20 #ifndef GNSS_SDR_CONCURRENT_MAP_H 21 #define GNSS_SDR_CONCURRENT_MAP_H 28 template <
typename Data>
37 typedef typename std::map<int, Data>::iterator Data_iterator;
39 void write(
int key, Data
const& data)
41 std::unique_lock<std::mutex> lock(the_mutex);
42 Data_iterator data_iter;
43 data_iter = the_map.find(key);
44 if (data_iter != the_map.end())
46 data_iter->second = data;
50 the_map.insert(std::pair<int, Data>(key, data));
55 std::map<int, Data> get_map_copy()
57 std::unique_lock<std::mutex> lock(the_mutex);
58 std::map<int, Data> map_aux = the_map;
65 std::unique_lock<std::mutex> lock(the_mutex);
66 size_t size_ = the_map.size();
71 bool read(
int key, Data& p_data)
73 std::unique_lock<std::mutex> lock(the_mutex);
74 Data_iterator data_iter;
75 data_iter = the_map.find(key);
76 if (data_iter != the_map.end())
78 p_data = data_iter->second;
87 std::map<int, Data> the_map;
88 mutable std::mutex the_mutex;
91 #endif // GNSS_SDR_CONCURRENT_MAP_H This class implements a thread-safe std::map.