添加线程安全map
parent
2c9ede1eb7
commit
cd9b8668dc
|
@ -0,0 +1,54 @@
|
||||||
|
/*
|
||||||
|
* @Author: your name
|
||||||
|
* @Date: 2021-10-09 10:27:31
|
||||||
|
* @LastEditTime: 2021-10-09 10:53:33
|
||||||
|
* @LastEditors: Please set LastEditors
|
||||||
|
* @Description: In User Settings Edit
|
||||||
|
* @FilePath: \test_algorithm\threadsafe_map.hpp
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <map>
|
||||||
|
#include <mutex>
|
||||||
|
|
||||||
|
template<typename Key, typename Val>
|
||||||
|
class ThreadSafeMap
|
||||||
|
{
|
||||||
|
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_;
|
||||||
|
};
|
Loading…
Reference in New Issue