6#ifndef SPDLOG_HEADER_ONLY
19 size_t q_max_items,
size_t threads_n, std::function<
void()> on_thread_start, std::function<
void()> on_thread_stop)
22 if (threads_n == 0 || threads_n > 1000)
24 throw_spdlog_ex(
"spdlog::thread_pool(): invalid threads_n param (valid "
27 for (
size_t i = 0;
i < threads_n;
i++)
29 threads_.emplace_back([
this, on_thread_start, on_thread_stop] {
38 :
thread_pool(q_max_items, threads_n, on_thread_start, [] {})
44 q_max_items, threads_n, [] {}, [] {})
119 switch (incoming_async_msg.
msg_type)
122 incoming_async_msg.
worker_ptr->backend_sink_it_(incoming_async_msg);
126 incoming_async_msg.
worker_ptr->backend_flush_();
void enqueue_nowait(T &&item)
Definition mpmc_blocking_q.h:46
size_t overrun_counter()
Definition mpmc_blocking_q.h:132
size_t size()
Definition mpmc_blocking_q.h:138
void enqueue(T &&item)
Definition mpmc_blocking_q.h:35
void dequeue(T &popped_item)
Definition mpmc_blocking_q.h:73
void reset_overrun_counter()
Definition mpmc_blocking_q.h:144
Definition thread_pool.h:82
bool process_next_msg_()
Definition thread_pool-inl.h:114
~thread_pool()
Definition thread_pool-inl.h:49
size_t overrun_counter()
Definition thread_pool-inl.h:77
q_type q_
Definition thread_pool.h:104
thread_pool(size_t q_max_items, size_t threads_n, std::function< void()> on_thread_start, std::function< void()> on_thread_stop)
Definition thread_pool-inl.h:18
void post_log(async_logger_ptr &&worker_ptr, const details::log_msg &msg, async_overflow_policy overflow_policy)
Definition thread_pool-inl.h:66
void worker_loop_()
Definition thread_pool-inl.h:104
void reset_overrun_counter()
Definition thread_pool-inl.h:82
void post_async_msg_(async_msg &&new_msg, async_overflow_policy overflow_policy)
Definition thread_pool-inl.h:92
void post_flush(async_logger_ptr &&worker_ptr, async_overflow_policy overflow_policy)
Definition thread_pool-inl.h:72
size_t queue_size()
Definition thread_pool-inl.h:87
std::vector< std::thread > threads_
Definition thread_pool.h:106
#define SPDLOG_CATCH_STD
Definition common.h:109
#define SPDLOG_TRY
Definition common.h:107
#define SPDLOG_INLINE
Definition common.h:47
std::shared_ptr< spdlog::async_logger > async_logger_ptr
Definition thread_pool.h:23
async_overflow_policy
Definition async_logger.h:24
SPDLOG_INLINE void throw_spdlog_ex(const std::string &msg, int last_errno)
Definition common-inl.h:75
Definition thread_pool.h:35
async_msg_type msg_type
Definition thread_pool.h:36
async_logger_ptr worker_ptr
Definition thread_pool.h:37
annotation details
Definition tag_strings.h:125
i
Definition tag_strings.h:60