From: Peter van Dijk Date: Fri, 27 Sep 2019 15:09:47 +0000 (+0200) Subject: auth statbag: move to std::mutex, avoid copies X-Git-Tag: dnsdist-1.4.0-rc4~39^2~2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=92b9198872a308d50e9dbdc4f998baa3ba3aad6b;p=pdns auth statbag: move to std::mutex, avoid copies --- diff --git a/pdns/statbag.cc b/pdns/statbag.cc index be36420e1..4900ec56e 100644 --- a/pdns/statbag.cc +++ b/pdns/statbag.cc @@ -164,27 +164,26 @@ template StatRing::StatRing(unsigned int size) { d_items.set_capacity(size); - pthread_mutex_init(&d_lock, 0); } template void StatRing::account(const T& t) { - Lock l(&d_lock); + std::lock_guard l(d_lock); d_items.push_back(t); } template unsigned int StatRing::getSize() { - Lock l(&d_lock); + std::lock_guard l(d_lock); return d_items.capacity(); } template void StatRing::resize(unsigned int newsize) { - Lock l(&d_lock); + std::lock_guard l(d_lock); d_items.set_capacity(newsize); } @@ -205,7 +204,7 @@ string StatRing::getHelp() template vector >StatRing::get() const { - Lock l(&d_lock); + std::lock_guard l(d_lock); map res; for(typename boost::circular_buffer::const_iterator i=d_items.begin();i!=d_items.end();++i) { res[*i]++; @@ -222,19 +221,19 @@ vector >StatRing::get() const void StatBag::declareRing(const string &name, const string &help, unsigned int size) { - d_rings[name]=StatRing(size); + d_rings.emplace(name, size); d_rings[name].setHelp(help); } void StatBag::declareComboRing(const string &name, const string &help, unsigned int size) { - d_comborings[name]=StatRing(size); + d_comborings.emplace(name, size); d_comborings[name].setHelp(help); } void StatBag::declareDNSNameQTypeRing(const string &name, const string &help, unsigned int size) { - d_dnsnameqtyperings[name] = StatRing >(size); + d_dnsnameqtyperings.emplace(name, size); d_dnsnameqtyperings[name].setHelp(help); } @@ -264,7 +263,7 @@ vector > StatBag::getRing(const string &name) template void StatRing::reset() { - Lock l(&d_lock); + std::lock_guard l(d_lock); d_items.clear(); } diff --git a/pdns/statbag.hh b/pdns/statbag.hh index 0992a0946..a8f5663a5 100644 --- a/pdns/statbag.hh +++ b/pdns/statbag.hh @@ -23,6 +23,7 @@ #define STATBAG_HH #include #include +#include #include #include #include @@ -54,7 +55,7 @@ private: } boost::circular_buffer d_items; - mutable pthread_mutex_t d_lock; + mutable std::mutex d_lock; string d_help; };