| TSS(3) | Library Functions Manual | TSS(3) |
tss —
thread-specific storage functions
POSIX Threads Library (libpthread, -lpthread)
#include
<threads.h>
typedef void (*tss_dtor_t) (void *)
int
tss_create(tss_t
*key, tss_dtor_t
dtor);
void
tss_delete(tss_t
key);
void *
tss_get(tss_t
key);
int
tss_set(tss_t
key, void
*val);
#define TSS_DTOR_ITERATIONS /* implementation specified */
There are two groups of storage in C programs:
Multithreaded programs in C add the third
group
thread-specific
storage. This data is private to thread and every entry of this type
has an associated tss_t opaque key that is global to
all threads in the process. A thread using the tss_t
* pointer accesses private data.
The
tss_create()
function creates a thread-specific storage with the
key handler with optional destructor
dtor. If the dtor parameter is
not NULL, then specified appropriate destructor will
be called on thread termination. The destructor is not called if a thread
called the tss_delete() function for the specified
key. If, after all the destructors have been called
for all non-NULL values with associated destructors,
there are still some non-NULL values with associated
destructors, then the process is repeated. If, after at least
TSS_DTOR_ITERATIONS iterations of destructor calls
for outstanding non-NULL values, there are still
some non-NULL values with associated destructors,
the NetBSD implementation stops calling further
destructors. The
thrd_exit(3) function must
not be called from a destructor.
The
tss_delete()
function frees resources used by the thread-specific storage identified by
the key object. This function can be called inside the
dtor destructor, however the destructor is not called
by tss_delete().
The
tss_get()
and
tss_set()
functions are used to get and set thread-specific storage.
The tss_create() function returns
thrd_success on success, otherwise
thrd_error on failure.
The tss_delete() function returns no
value.
The tss_get() returns pointer to
thread-specific storage on success or NULL on
failure.
The tss_set() function returns
thrd_success on success, otherwise
thrd_error on failure.
The tss interface conforms to
ISO/IEC 9899:2011
(“ISO C11”).
This interface first appeared in NetBSD 9.
Kamil Rytarowski <kamil@NetBSD.org>
| October 16, 2016 | NetBSD 11.0 |