30 return []<
class S = std::size_t>() {
33 static thread_local S self{::pthread_self()};
36 static constexpr std::hash<std::thread::id> hasher;
37 return hasher(std::this_thread::get_id());
49 auto logger = std::make_shared<TraceLogger>(size);
66 const std::function<
void(std::shared_ptr<TraceLogger>)> &callback) {
68 auto old_loggers = [&] {
72 for (
auto &logger : old_loggers)
73 callback(std::move(logger));
TraceLogger & get_trace_logger()
Get a reference to the global (but thread-local) trace logger instance.
size_t trace_logger_set_default_size(size_t size)
Set the default capacity for trace loggers created by get_trace_logger().
static std::mutex trace_loggers_mutex
void drop_trace_loggers(const std::function< void(std::shared_ptr< TraceLogger >)> &callback=nullptr)
Like for_each_trace_logger, but also forgets about all loggers.
void for_each_trace_logger(const std::function< void(TraceLogger &)> &callback)
Call callback for each trace logger instance.
static std::atomic< size_t > default_trace_logger_size
static std::list< std::shared_ptr< TraceLogger > > trace_loggers
static auto new_trace_logger(size_t size)
std::size_t get_thread_id()
Class for recording trace logs, used when ITT or Perfetto tracing is not enabled.
static clock::time_point t0
Tracing logger and macros (ITT, Perfetto, or fallback).