From 4022e590180d02d9b4f2463b74a39a7ba91d31b5 Mon Sep 17 00:00:00 2001 From: badaix Date: Fri, 1 Nov 2019 11:41:20 +0100 Subject: [PATCH] configurable number of threads --- server/snapserver.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/server/snapserver.cpp b/server/snapserver.cpp index 2fc0788c..77634d07 100644 --- a/server/snapserver.cpp +++ b/server/snapserver.cpp @@ -80,6 +80,8 @@ int main(int argc, char* argv[]) auto streamValue = conf.add>( "s", "stream.stream", "URI of the PCM input stream.\nFormat: TYPE://host/path?name=NAME\n[&codec=CODEC]\n[&sampleformat=SAMPLEFORMAT]", pcmStream, &pcmStream); + size_t num_threads = 2; + conf.add>("", "stream.threads", "number of streaming threads", num_threads, &num_threads); conf.add>("", "stream.sampleformat", "Default sample format", settings.stream.sampleFormat, &settings.stream.sampleFormat); conf.add>("c", "stream.codec", "Default transport codec\n(flac|ogg|pcm)[:options]\nType codec:? to get codec specific options", @@ -261,12 +263,16 @@ int main(int argc, char* argv[]) std::unique_ptr streamServer(new StreamServer(io_context, settings)); streamServer->start(); - std::thread t([&] { io_context.run(); }); + LOG(DEBUG) << "number of threads: " << num_threads << ", hw threads: " << std::thread::hardware_concurrency() << "\n"; + std::vector threads; + for (auto n = 0; n < num_threads; ++n) + threads.emplace_back([&] { io_context.run(); }); auto sig = install_signal_handler({SIGHUP, SIGTERM, SIGINT}).get(); SLOG(INFO) << "Received signal " << sig << ": " << strsignal(sig) << "\n"; io_context.stop(); - t.join(); + for (auto& t : threads) + t.join(); LOG(INFO) << "Stopping streamServer" << endl; streamServer->stop();