aboutsummaryrefslogtreecommitdiff
path: root/src/core/taskq.c
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2024-11-09 23:45:21 -0800
committerGarrett D'Amore <garrett@damore.org>2024-11-11 11:03:12 -0800
commit713b80f440cb414cd0b856bde0ea1b31f939777f (patch)
tree1186c42418559c85719023bde3e919aa2df7fcef /src/core/taskq.c
parentcbe9a27ef7485977fbc7c713376b096b6723da3d (diff)
downloadnng-713b80f440cb414cd0b856bde0ea1b31f939777f.tar.gz
nng-713b80f440cb414cd0b856bde0ea1b31f939777f.tar.bz2
nng-713b80f440cb414cd0b856bde0ea1b31f939777f.zip
refactor initialization/finalization
Applications must now call nng_init(), but they can supply a set of parameters optionally. The code is now safe for multiple libraries to do this concurrently, meaning nng_fini no longer can race against another instance starting up. The nni_init checks on all public APIs are removed now.
Diffstat (limited to 'src/core/taskq.c')
-rw-r--r--src/core/taskq.c26
1 files changed, 8 insertions, 18 deletions
diff --git a/src/core/taskq.c b/src/core/taskq.c
index 09886596..496c2fab 100644
--- a/src/core/taskq.c
+++ b/src/core/taskq.c
@@ -9,6 +9,7 @@
//
#include "core/nng_impl.h"
+#include "nng/nng.h"
typedef struct nni_taskq_thr nni_taskq_thr;
struct nni_taskq_thr {
@@ -243,24 +244,13 @@ nni_task_fini(nni_task *task)
}
int
-nni_taskq_sys_init(void)
+nni_taskq_sys_init(nng_init_params *params)
{
- int num_thr;
- int max_thr;
+ int16_t num_thr;
+ int16_t max_thr;
-#ifndef NNG_NUM_TASKQ_THREADS
-#define NNG_NUM_TASKQ_THREADS (nni_plat_ncpu() * 2)
-#endif
-
-#ifndef NNG_MAX_TASKQ_THREADS
-#define NNG_MAX_TASKQ_THREADS 16
-#endif
-
- 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);
+ max_thr = params->max_task_threads;
+ num_thr = params->num_task_threads;
if ((max_thr > 0) && (num_thr > max_thr)) {
num_thr = max_thr;
@@ -268,9 +258,9 @@ nni_taskq_sys_init(void)
if (num_thr < 2) {
num_thr = 2;
}
- nni_init_set_effective(NNG_INIT_NUM_TASK_THREADS, num_thr);
+ params->num_task_threads = num_thr;
- return (nni_taskq_init(&nni_taskq_systq, num_thr));
+ return (nni_taskq_init(&nni_taskq_systq, (int) num_thr));
}
void