[Lldb-commits] [lldb] [lldb][progress] Add progress manager class (PR #81319)
Adrian Prantl via lldb-commits
lldb-commits at lists.llvm.org
Wed Feb 14 09:43:23 PST 2024
================
@@ -66,3 +67,41 @@ void Progress::ReportProgress() {
m_debugger_id);
}
}
+
+ProgressManager &ProgressManager::InstanceImpl() {
+ static std::once_flag g_once_flag;
+ static ProgressManager *g_progress_manager = nullptr;
+ std::call_once(g_once_flag, []() {
+ // NOTE: known leak to avoid global destructor chain issues.
+ g_progress_manager = new ProgressManager();
+ });
+ return *g_progress_manager;
+}
+
+ProgressManager::ProgressManager() : m_progress_category_map() {}
+
+ProgressManager::~ProgressManager() {}
+
+ProgressManager &ProgressManager::Instance() { return InstanceImpl(); }
+
+void ProgressManager::Increment(std::string title) {
+ std::lock_guard<std::mutex> lock(m_progress_map_mutex);
+ auto pair = m_progress_category_map.insert(std::pair(title, 1));
+
+ // If pair.first is not empty after insertion it means that that
+ // category was entered for the first time and should not be incremented
+ if (!pair.second)
+ ++pair.first->second;
+}
+
+void ProgressManager::Decrement(std::string title) {
+ std::lock_guard<std::mutex> lock(m_progress_map_mutex);
+ auto pos = m_progress_category_map.find(title);
+
+ if (pos == m_progress_category_map.end())
+ return;
+
+ // Remove the category from the map if the refcount reaches 0
----------------
adrian-prantl wrote:
same here
https://github.com/llvm/llvm-project/pull/81319
More information about the lldb-commits
mailing list