1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- //
- // 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();
- }
- unsigned int size()
- {
- return dataMap_.size();
- }
- private:
- std::map<Key, Val> dataMap_;
- std::mutex mtx_;
- };
- #endif //NNXX_TESTS_THREAD_SAFE_MAP_H
|