tss_set
Header: <threads.h>
Sets the value of the thread-specific storage identified by tss_id for the current thread to val. Different threads may set different values to the same key.
# Declarations
int tss_set( tss_t tss_id, void *val );
(since C11)
# Parameters
tss_id: thread-specific storage key, obtained from tss_create and not deleted by tss_deleteval: value to set thread-specific storage to
# Return value
thrd_success if successful, thrd_error otherwise.
# Notes
The POSIX equivalent of this function is pthread_setspecific.
Typically TSS is used to store pointers to blocks of dynamically allocated memory that have been reserved for use by the calling thread.
tss_set may be called in the TSS destructor. If the destructor exits with non-NULL value in the TSS storage, it will be retried by thrd_exit up to TSS_DTOR_ITERATIONS times, after which the storage will be lost.
# Example
int thread_func(void *arg) {
tss_t key;
if (thrd_success == tss_create(&key, free)) {
tss_set(key, malloc(4)); // stores a pointer on TSS
// ...
}
} // calls free() for the pointer stored on TSS