nng_thread_create(3supp)
| NNG_THREAD_CREATE(3supp) | NNG Reference Manual | NNG_THREAD_CREATE(3supp) |
NAME
nng_thread_create - create thread
SYNOPSIS
#include <nng/nng.h> typedef struct nng_thread nng_thread; int nng_thread_create(nng_thread **thrp, void (*func)(void *), void *arg);
DESCRIPTION
The nng_thread_create() function creates a single thread of execution, running func with the argument arg. The thread is started immediately. A pointer to the thread object is returned in thrp.
The intention of this program is to facilitate writing parallel programs. Threads created by this program will be based upon the underlying threading mechanism of the system that NNG is running on. This may include use of coroutines.
Using threads created by this function can make it easy to write programs that use simple sequential execution, using functions in the NNG suite that would otherwise normally wait synchronously for completion.
When the thread is no longer needed, the nng_thread_destroy() function should be used to reap it. (This function will block waiting for func to return.)
Important
Thread objects created by this function may not be real system
level threads capable of performing blocking I/O operations using normal
blocking system calls. If use of blocking system calls is required (not
including APIs provided by the NNG library itself of course), then
real OS-specific threads should be created instead (such as with
pthread_create() or similar functions.)
Important
Thread objects created by this function cannot be passed
to any system threading functions.
Tip
The system may impose limits on the number of threads that can be
created. Typically applications should not create more than a dozen of these.
If greater concurrency or scalability is needed, consider instead using an
asynchronous model using nng_aio structures.
Tip
Threads can be synchronized using
mutexes and condition variables.
RETURN VALUES
This function returns 0 on success, and non-zero otherwise.
ERRORS
NNG_ENOMEM
SEE ALSO
nng_strerror(3), nng_cv_alloc(3supp), nng_mtx_alloc(3supp), nng_thread_destroy(3supp), nng_aio(5), nng(7)
| 2026-06-29 |
