aboutsummaryrefslogtreecommitdiff
path: root/src/core/taskq.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/taskq.c')
-rw-r--r--src/core/taskq.c32
1 files changed, 22 insertions, 10 deletions
diff --git a/src/core/taskq.c b/src/core/taskq.c
index d914093b..09886596 100644
--- a/src/core/taskq.c
+++ b/src/core/taskq.c
@@ -1,5 +1,5 @@
//
-// Copyright 2022 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2024 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -245,20 +245,32 @@ nni_task_fini(nni_task *task)
int
nni_taskq_sys_init(void)
{
- int nthrs;
+ int num_thr;
+ int max_thr;
#ifndef NNG_NUM_TASKQ_THREADS
- nthrs = nni_plat_ncpu() * 2;
-#else
- nthrs = NNG_NUM_TASKQ_THREADS;
+#define NNG_NUM_TASKQ_THREADS (nni_plat_ncpu() * 2)
#endif
-#if NNG_MAX_TASKQ_THREADS > 0
- if (nthrs > NNG_MAX_TASKQ_THREADS) {
- nthrs = NNG_MAX_TASKQ_THREADS;
- }
+
+#ifndef NNG_MAX_TASKQ_THREADS
+#define NNG_MAX_TASKQ_THREADS 16
#endif
- return (nni_taskq_init(&nni_taskq_systq, nthrs));
+ max_thr = (int) nni_init_get_param(
+ NNG_INIT_MAX_TASK_THREADS, NNG_MAX_TASKQ_THREADS);
+
+ num_thr = (int) nni_init_get_param(
+ NNG_INIT_NUM_TASK_THREADS, NNG_NUM_TASKQ_THREADS);
+
+ if ((max_thr > 0) && (num_thr > max_thr)) {
+ num_thr = max_thr;
+ }
+ if (num_thr < 2) {
+ num_thr = 2;
+ }
+ nni_init_set_effective(NNG_INIT_NUM_TASK_THREADS, num_thr);
+
+ return (nni_taskq_init(&nni_taskq_systq, num_thr));
}
void