Skip to content
Snippets Groups Projects
Commit 369e5b1a authored by T.J. Corona's avatar T.J. Corona Committed by Kitware Robot
Browse files

Merge topic 'thread-safe-logger'


f2c60c2e vtkLogger: construct thread-unique scope stacks

Acked-by: default avatarKitware Robot <kwrobot@kitware.com>
Acked-by: default avatarDavid Thompson <david.thompson@kitware.com>
Acked-by: default avatarUtkarsh Ayachit <utkarsh.ayachit@kitware.com>
Merge-request: !6462
parents 4237e3bb f2c60c2e
No related merge requests found
......@@ -22,7 +22,10 @@
#include <cstdlib>
#include <memory>
#include <mutex>
#include <sstream>
#include <thread>
#include <unordered_map>
#include <vector>
//=============================================================================
......@@ -72,10 +75,12 @@ namespace detail
{
#if VTK_MODULE_ENABLE_VTK_loguru
using scope_pair = std::pair<std::string, std::shared_ptr<loguru::LogScopeRAII> >;
static std::mutex g_mutex;
static std::unordered_map<std::thread::id, std::vector<scope_pair> > g_vectors;
static std::vector<scope_pair>& get_vector()
{
static std::vector<scope_pair> the_vector{};
return the_vector;
std::lock_guard<std::mutex> guard(g_mutex);
return g_vectors[std::this_thread::get_id()];
}
static void push_scope(const char* id, std::shared_ptr<loguru::LogScopeRAII> ptr)
......@@ -89,6 +94,12 @@ static void pop_scope(const char* id)
if (vector.size() > 0 && vector.back().first == id)
{
vector.pop_back();
if (vector.empty())
{
std::lock_guard<std::mutex> guard(g_mutex);
g_vectors.erase(std::this_thread::get_id());
}
}
else
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment