mirror of
https://github.com/gabime/spdlog.git
synced 2025-01-24 06:32:06 +08:00
Allow custom callback to be executed by thread-pool's threads before joining them.
This is similar to a change that was made a while ago ( https://github.com/gabime/spdlog/pull/208 ).
This commit is contained in:
parent
9e17fafe1b
commit
6636ff05e6
@ -13,7 +13,7 @@
|
|||||||
namespace spdlog {
|
namespace spdlog {
|
||||||
namespace details {
|
namespace details {
|
||||||
|
|
||||||
SPDLOG_INLINE thread_pool::thread_pool(size_t q_max_items, size_t threads_n, std::function<void()> on_thread_start)
|
SPDLOG_INLINE thread_pool::thread_pool(size_t q_max_items, size_t threads_n, std::function<void()> on_thread_start, std::function<void()> on_thread_stop)
|
||||||
: q_(q_max_items)
|
: q_(q_max_items)
|
||||||
{
|
{
|
||||||
if (threads_n == 0 || threads_n > 1000)
|
if (threads_n == 0 || threads_n > 1000)
|
||||||
@ -23,15 +23,20 @@ SPDLOG_INLINE thread_pool::thread_pool(size_t q_max_items, size_t threads_n, std
|
|||||||
}
|
}
|
||||||
for (size_t i = 0; i < threads_n; i++)
|
for (size_t i = 0; i < threads_n; i++)
|
||||||
{
|
{
|
||||||
threads_.emplace_back([this, on_thread_start] {
|
threads_.emplace_back([this, on_thread_start, on_thread_stop] {
|
||||||
on_thread_start();
|
on_thread_start();
|
||||||
this->thread_pool::worker_loop_();
|
this->thread_pool::worker_loop_();
|
||||||
|
on_thread_stop();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SPDLOG_INLINE thread_pool::thread_pool(size_t q_max_items, size_t threads_n, std::function<void()> on_thread_start)
|
||||||
|
: thread_pool(q_max_items, threads_n, on_thread_start, [] {})
|
||||||
|
{}
|
||||||
|
|
||||||
SPDLOG_INLINE thread_pool::thread_pool(size_t q_max_items, size_t threads_n)
|
SPDLOG_INLINE thread_pool::thread_pool(size_t q_max_items, size_t threads_n)
|
||||||
: thread_pool(q_max_items, threads_n, [] {})
|
: thread_pool(q_max_items, threads_n, [] {}, [] {})
|
||||||
{}
|
{}
|
||||||
|
|
||||||
// message all threads to terminate gracefully join them
|
// message all threads to terminate gracefully join them
|
||||||
|
@ -84,6 +84,7 @@ public:
|
|||||||
using item_type = async_msg;
|
using item_type = async_msg;
|
||||||
using q_type = details::mpmc_blocking_queue<item_type>;
|
using q_type = details::mpmc_blocking_queue<item_type>;
|
||||||
|
|
||||||
|
thread_pool(size_t q_max_items, size_t threads_n, std::function<void()> on_thread_start, std::function<void()> on_thread_stop);
|
||||||
thread_pool(size_t q_max_items, size_t threads_n, std::function<void()> on_thread_start);
|
thread_pool(size_t q_max_items, size_t threads_n, std::function<void()> on_thread_start);
|
||||||
thread_pool(size_t q_max_items, size_t threads_n);
|
thread_pool(size_t q_max_items, size_t threads_n);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user