aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2020-02-24 05:57:35 -0800
committerGarrett D'Amore <garrett@damore.org>2020-02-24 05:57:35 -0800
commit15869e302e4f15c4c46bf5dc4bdf2aea96f513e0 (patch)
treec968153f00357aac482e5cc8555f8d2bb83a415d /src
parent4f7cf93dd0d9c37c7e5c6ec31d057f7cb3714a9c (diff)
downloadnng-15869e302e4f15c4c46bf5dc4bdf2aea96f513e0.tar.gz
nng-15869e302e4f15c4c46bf5dc4bdf2aea96f513e0.tar.bz2
nng-15869e302e4f15c4c46bf5dc4bdf2aea96f513e0.zip
fixes #1202 More than 120 threads was started by NNG
This introduces a new CMake option, NNG_MAX_TASKQ_THREADS, with a default value of 16. The number of taskq workers will generally be calculated as vcpu * 2. This new value, if not zero, sets an upper bound. Note that the value should be at least two, in order to ensure no deadlocks occur.
Diffstat (limited to 'src')
-rw-r--r--src/core/taskq.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/core/taskq.c b/src/core/taskq.c
index 09e822df..e63e33c7 100644
--- a/src/core/taskq.c
+++ b/src/core/taskq.c
@@ -228,6 +228,11 @@ nni_taskq_sys_init(void)
#else
nthrs = NNG_NUM_TASKQ_THREADS;
#endif
+#if NNG_MAX_TASKQ_THREADS > 0
+ if (nthrs > NNG_MAX_TASKQ_THREADS) {
+ nthrs = NNG_MAX_TASKQ_THREADS;
+ }
+#endif
return (nni_taskq_init(&nni_taskq_systq, nthrs));
}