aboutsummaryrefslogtreecommitdiff
path: root/src/core/init.h
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2024-01-01 15:07:00 -0800
committerGarrett D'Amore <garrett@damore.org>2024-01-01 16:39:43 -0800
commita9e98e546c4cf40251435b3d0e84b9ac980a9623 (patch)
treeaaed3361bf0718d5cedb932ac29ab72c0bbd35ed /src/core/init.h
parent07ad78c04594ffce668892bea7b8f0f7e0ecccd2 (diff)
downloadnng-a9e98e546c4cf40251435b3d0e84b9ac980a9623.tar.gz
nng-a9e98e546c4cf40251435b3d0e84b9ac980a9623.tar.bz2
nng-a9e98e546c4cf40251435b3d0e84b9ac980a9623.zip
fixes #1572 nng creates too many threads
This further limits some of the thread counts, but principally it offers a new runtime facility, nng_init_set_parameter(), which can be used to set certain runtime parameters on the number of threads, provided it is called before the rest of application start up. This facility is quite intentionally "undocumented", at least for now, as we want to limit our commitment to it. Still this should be helpful for applications that need to reduce the number of threads that are created.
Diffstat (limited to 'src/core/init.h')
-rw-r--r--src/core/init.h14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/core/init.h b/src/core/init.h
index 4340b15b..d20cf046 100644
--- a/src/core/init.h
+++ b/src/core/init.h
@@ -1,7 +1,6 @@
//
-// Copyright 2017 Garrett D'Amore <garrett@damore.org>
+// Copyright 2024 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2017 Capitar IT Group BV <info@capitar.com>
-// Copyright 2017 Staysail Systems, Inc. <info@staysail.tech>
//
// This software is supplied under the terms of the MIT License, a
// copy of which should be located in the distribution where this
@@ -23,4 +22,15 @@ int nni_init(void);
// that all resources used by the library are released back to the system.
void nni_fini(void);
+// nni_init_param is used by applications (via nng_init_param) to configure
+// some tunable settings at runtime. It must be called before any other NNG
+// functions are called, in order to have any effect at all.
+void nni_init_set_param(nng_init_parameter, uint64_t value);
+
+// subsystems can call this to obtain a parameter value.
+uint64_t nni_init_get_param(nng_init_parameter parameter, uint64_t default_value);
+
+// subsystems can set this to facilitate tests (only used in test code)
+void nni_init_set_effective(nng_init_parameter p, uint64_t value);
+
#endif // CORE_INIT_H