From 43f87b4bcaa6d160cf7c4856109af06ea4873cf3 Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Sun, 4 Oct 2020 02:28:48 -0400 Subject: allow limiting concurrent http requests add Semaphore update SettingsManager a little --- util.hpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'util.hpp') diff --git a/util.hpp b/util.hpp index bf6d9ee..5585013 100644 --- a/util.hpp +++ b/util.hpp @@ -8,7 +8,34 @@ #include #include #include +#include +#include +#include + +class Semaphore { +public: + Semaphore(int count = 0) + : m_count(count) {} + + inline void notify() { + std::unique_lock lock(m_mutex); + m_count++; + lock.unlock(); + m_cv.notify_one(); + } + + inline void wait() { + std::unique_lock lock(m_mutex); + while (m_count == 0) + m_cv.wait(lock); + m_count--; + } +private: + std::mutex m_mutex; + std::condition_variable m_cv; + int m_count; +}; // gtkmm doesnt seem to work #ifdef _WIN32 #define WIN32_LEAN_AND_MEAN -- cgit v1.2.3