From cd9b8668dc83a52a22c78c18a4f7b36d3f32d016 Mon Sep 17 00:00:00 2001 From: "ATTIOT\\zhengcy" Date: Sat, 9 Oct 2021 11:06:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BA=BF=E7=A8=8B=E5=AE=89?= =?UTF-8?q?=E5=85=A8map?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- general/src/threadsafe/threadsafe_map.hpp | 54 +++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 general/src/threadsafe/threadsafe_map.hpp diff --git a/general/src/threadsafe/threadsafe_map.hpp b/general/src/threadsafe/threadsafe_map.hpp new file mode 100644 index 0000000..1994a5a --- /dev/null +++ b/general/src/threadsafe/threadsafe_map.hpp @@ -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 +#include + +template +class ThreadSafeMap +{ +public: + typedef typename std::map::iterator this_iterator; + typedef typename std::map::const_iterator this_const_iterator; + Val& operator [](const Key& key) + { + std::lock_guard lk(mtx_); + return dataMap_[key]; + } + int erase(const Key& key ) + { + std::lock_guard lk(mtx_); + return dataMap_.erase(key); + } + + this_iterator find( const Key& key ) + { + std::lock_guard lk(mtx_); + return dataMap_.find(key); + } + this_const_iterator find( const Key& key ) const + { + std::lock_guard lk(mtx_); + return dataMap_.find(key); + } + + this_iterator end() + { + return dataMap_.end(); + } + + this_const_iterator end() const + { + return dataMap_.end(); + } + +private: + std::map dataMap_; + std::mutex mtx_; +};