Commit e2cd9285 authored by gabi's avatar gabi

async_sink user pointers in the q instead of objects in the queue (faster than moving)

parent fd3f13cd
...@@ -53,7 +53,7 @@ namespace sinks ...@@ -53,7 +53,7 @@ namespace sinks
class async_sink : public base_sink < details::null_mutex > class async_sink : public base_sink < details::null_mutex >
{ {
public: public:
using q_type = details::blocking_queue < details::log_msg > ; using q_type = details::blocking_queue < std::unique_ptr<details::log_msg> > ;
explicit async_sink(const q_type::size_type max_queue_size); explicit async_sink(const q_type::size_type max_queue_size);
...@@ -109,7 +109,7 @@ inline spdlog::sinks::async_sink::~async_sink() ...@@ -109,7 +109,7 @@ inline spdlog::sinks::async_sink::~async_sink()
inline void spdlog::sinks::async_sink::_sink_it(const details::log_msg& msg) inline void spdlog::sinks::async_sink::_sink_it(const details::log_msg& msg)
{ {
_push_sentry(); _push_sentry();
_q.push(msg); _q.push(std::unique_ptr<details::log_msg>(new details::log_msg(msg)));
} }
...@@ -128,7 +128,7 @@ inline void spdlog::sinks::async_sink::_thread_loop() ...@@ -128,7 +128,7 @@ inline void spdlog::sinks::async_sink::_thread_loop()
{ {
try try
{ {
s->log(msg); s->log(*msg);
} }
catch (const std::exception& ex) catch (const std::exception& ex)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment