customizable number of threadpool threads

This commit is contained in:
Martin Rotter 2023-01-19 08:34:33 +01:00
parent 570973fdcc
commit 99e5e9fca0
2 changed files with 15 additions and 3 deletions

View file

@ -94,6 +94,7 @@
#define RELOAD_MODEL_BORDER_NUM 10
#define COOKIE_URL_IDENTIFIER ":COOKIE:"
#define DEFAULT_NOTIFICATION_VOLUME 50
#define MAX_THREADPOOL_THREADS 32
#define GOOGLE_SEARCH_URL "https://www.google.com/search?q=%1&ie=utf-8&oe=utf-8"
#define GOOGLE_SUGGEST_URL "http://suggestqueries.google.com/complete/search?output=toolbar&hl=en&q=%1"
@ -139,6 +140,8 @@
#define CLI_QUIT_INSTANCE "q"
#define CLI_IS_RUNNING "a"
#define CLI_THREADS "threads"
#define HTTP_HEADERS_ACCEPT "Accept"
#define HTTP_HEADERS_CONTENT_TYPE "Content-Type"
#define HTTP_HEADERS_CONTENT_LENGTH "Content-Length"

View file

@ -946,9 +946,13 @@ void Application::setupCustomDataFolder(const QString& data_folder) {
void Application::setupGlobalThreadPool() {
auto ideal_th_count = QThread::idealThreadCount();
int custom_threads = m_cmdParser.value(QSL(CLI_THREADS)).toInt();
if (ideal_th_count > 1) {
QThreadPool::globalInstance()->setMaxThreadCount((std::min)(32, 2 * ideal_th_count));
if (custom_threads > 0) {
QThreadPool::globalInstance()->setMaxThreadCount((std::min)(MAX_THREADPOOL_THREADS, custom_threads));
}
else if (ideal_th_count > 1) {
QThreadPool::globalInstance()->setMaxThreadCount((std::min)(MAX_THREADPOOL_THREADS, 2 * ideal_th_count));
}
// NOTE: Do not expire threads so that their IDs are not reused.
@ -1156,12 +1160,17 @@ void Application::fillCmdArgumentsParser(QCommandLineParser& parser) {
QSL("Use custom port for AdBlock server. It is highly recommended to use values higher than 1024."),
QSL("port"));
QCommandLineOption custom_threads(QSL(CLI_THREADS),
QSL("Specify number of threads. Note that number cannot be higher than %1.")
.arg(MAX_THREADPOOL_THREADS),
QSL("count"));
parser.addOptions({
help, version, log_file, custom_data_folder, disable_singleinstance, disable_only_debug, disable_debug,
#if defined(USE_WEBENGINE)
force_nowebengine,
#endif
forced_style, adblock_port, custom_ua
forced_style, adblock_port, custom_ua, custom_threads
});
parser.addPositionalArgument(QSL("urls"),
QSL("List of URL addresses pointing to individual online feeds which should be added."),