12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- //
- // Created by zx on 2020/7/3.
- //
- #ifndef NNXX_TESTS_THREAD_SAFE_MAP_H
- #define NNXX_TESTS_THREAD_SAFE_MAP_H
- #include <map>
- #include <mutex>
- template<typename Key, typename Val>
- class thread_safe_map
- {
- public:
- typedef typename std::map<Key, Val>::iterator this_iterator;
- typedef typename std::map<Key, Val>::const_iterator this_const_iterator;
- Val& operator [](const Key& key)
- {
- std::lock_guard<std::mutex> lk(mtx_);
- return dataMap_[key];
- }
- int erase(const Key& key )
- {
- std::lock_guard<std::mutex> lk(mtx_);
- return dataMap_.erase(key);
- }
- this_iterator find( const Key& key )
- {
- std::lock_guard<std::mutex> lk(mtx_);
- return dataMap_.find(key);
- }
- this_const_iterator find( const Key& key ) const
- {
- std::lock_guard<std::mutex> lk(mtx_);
- return dataMap_.find(key);
- }
- this_iterator end()
- {
- return dataMap_.end();
- }
- this_const_iterator end() const
- {
- return dataMap_.end();
- }
- private:
- std::map<Key, Val> dataMap_;
- std::mutex mtx_;
- };
- #endif //NNXX_TESTS_THREAD_SAFE_MAP_H
|