diff options
| -rw-r--r-- | CMakeLists.txt | 8 | ||||
| -rw-r--r-- | src/core/taskq.c | 5 |
2 files changed, 12 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 9685713b..f74a13c1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -135,6 +135,12 @@ if (NNG_NUM_TASKQ_THREADS) endif () mark_as_advanced(NNG_NUM_TASKQ_THREADS) +set(NNG_MAX_TASKQ_THREADS 16 CACHE STRING "Upper bound on taskq threads, 0 for no limit") +mark_as_advanced(NNG_MAX_TASKQ_THREADS) +if (NNG_MAX_TASKQ_THREADS) + add_definitions(-DNNG_MAX_TASKQ_THREADS=${NNG_MAX_TASKQ_THREADS}) +endif () + # Platform checks. if (CMAKE_C_COMPILER_ID STREQUAL "GNU") @@ -152,7 +158,7 @@ endif () include(CheckAtomicLib) CheckAtomicLib() if (NOT HAVE_C_ATOMICS_WITHOUT_LIB AND HAVE_C_ATOMICS_WITH_LIB) - list(APPEND NNG_LIBS "atomic") + list(APPEND NNG_LIBS "atomic") endif () 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)); } |
