added tp getter to async api

This commit is contained in:
gabime 2018-05-27 03:14:55 +03:00
parent c568640595
commit ef5c4f027c
4 changed files with 13 additions and 8 deletions

View File

@ -63,17 +63,16 @@ int main(int argc, char *argv[])
cout << "*******************************************************************************\n"; cout << "*******************************************************************************\n";
size_t total_rate = 0; size_t total_rate = 0;
spdlog::init_thread_pool(tp_queue_size, tp_threads); spdlog::init_thread_pool(tp_queue_size, tp_threads);
for (int i = 0; i < iters; ++i) for (int i = 0; i < iters; ++i)
{ {
auto as = spdlog::create_async_logger<null_sink_mt>("async(null-sink)"); auto as = spdlog::create_async_logger<null_sink_mt>("async(null-sink)");
total_rate += bench_as(howmany, as, client_threads); total_rate += bench_as(howmany, as, client_threads);
spdlog::drop("async(null-sink)"); spdlog::drop("async(null-sink)");
spdlog::details::registry::instance().get_thread_pool()->wait_empty (); spdlog::thread_pool()->wait_empty();
} }
std::cout << endl; std::cout << endl;
std::cout << "Avg rate: " << format(total_rate / iters) << "/sec" << std::endl; std::cout << "Avg rate: " << format(total_rate / iters) << "/sec" << std::endl;
} }
catch (std::exception &ex) catch (std::exception &ex)
{ {

View File

@ -74,12 +74,13 @@ int main(int argc, char *argv[])
cout << "async logging.. " << threads << " threads sharing same logger, " << format(howmany) << " iterations " << endl; cout << "async logging.. " << threads << " threads sharing same logger, " << format(howmany) << " iterations " << endl;
cout << "*******************************************************************************\n"; cout << "*******************************************************************************\n";
spdlog::init_thread_pool(queue_size, 1);
for (int i = 0; i < 3; ++i) for (int i = 0; i < 3; ++i)
{ {
spdlog::init_thread_pool(queue_size, 1);
auto as = spdlog::basic_logger_mt<spdlog::create_async>("as", "logs/basic_async.log", true); auto as = spdlog::basic_logger_mt<spdlog::create_async>("as", "logs/basic_async.log", true);
bench_mt(howmany, as, threads); bench_mt(howmany, as, threads);
spdlog::drop("as"); spdlog::drop("as");
spdlog::thread_pool()->wait_empty();
} }
} }
catch (std::exception &ex) catch (std::exception &ex)

View File

@ -59,4 +59,10 @@ inline void init_thread_pool(size_t q_size, size_t thread_count)
auto tp = std::make_shared<thread_pool>(q_size, thread_count); auto tp = std::make_shared<thread_pool>(q_size, thread_count);
registry::instance().set_thread_pool(std::move(tp)); registry::instance().set_thread_pool(std::move(tp));
} }
// get the global thread pool.
inline std::shared_ptr<spdlog::details::thread_pool> thread_pool()
{
return details::registry::instance().get_thread_pool();
}
} // namespace spdlog } // namespace spdlog

View File

@ -101,14 +101,13 @@ TEST_CASE("multi threads", "[async]")
logger->info("Hello message #{}", j); logger->info("Hello message #{}", j);
} }
}); });
logger->flush(); logger->flush();
} }
for (auto &t : threads) for (auto &t : threads)
{ {
t.join(); t.join();
} }
} }
REQUIRE(test_sink->msg_counter() == messages * n_threads); REQUIRE(test_sink->msg_counter() == messages * n_threads);