Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

tis_key_create(3) [osf1 man page]

tis_key_create(3)					     Library Functions Manual						 tis_key_create(3)

NAME
tis_key_create - Generates a unique thread-specific data key. LIBRARY
Standard C Library (libc.so, libc.a) SYNOPSIS
#include <tis.h> int tis_key_create( pthread_key_t *key, void (*destructor)(void *)); STANDARDS
None PARAMETERS
Address of a variable that receives the key value. This value is used in calls to tis_getspecific(3) and tis_setspecific(3) to get and set the value associated with this key. Address of a routine that is called to destroy the context value when a thread terminates with a non- NULL value for the key. Note that this argument is used only when threads are present. DESCRIPTION
This routine generates a unique thread-specific data key. The key argument points to an opaque object used to locate data. This routine generates and returns a new key value. The key reserves a cell. Each call to this routine creates a new cell that is unique within an application invocation. Keys must be generated from initialization code that is guaranteed to be called only once within each process. (See the tis_once(3) description for more information.) Your program can associate an optional destructor function with each key. At thread exit, if a key has a non-NULL destructor function pointer, and the thread has a non-NULL value associated with that key, the function pointed to is called with the current associated value as its sole argument. The order in which data destructors are called at thread termination is undefined. When threads are present, keys and any corresponding data are thread specific; they enable the context to be maintained on a per-thread basis. For more information about the use of tis_key_create(3) in a threaded environment, refer to the pthread_key_create(3) description. DECthreads imposes a maximum number of thread-specific data keys, equal to the symbolic constant PTHREAD_KEYS_MAX. RETURN VALUES
If an error condition occurs, this routine returns an integer value indicating the type of error. Possible return values are as follows: Successful completion. The system lacked the necessary resources to create another thread-specific data key, or the limit on the total number of keys per process (PTHREAD_KEYS_MAX) has been exceeded. Insufficient memory exists to create the key. Invalid argument. ERRORS
None RELATED INFORMATION
Functions: tis_getspecific(3), tis_key_delete(3), tis_once(3), tis_setspecific(3) Manuals: Guide to DECthreads and Programmer's Guide delim off tis_key_create(3)

Check Out this Related Man Page

pthread_key_create(3)					     Library Functions Manual					     pthread_key_create(3)

NAME
pthread_key_create - Generates a unique thread-specific data key. LIBRARY
DECthreads POSIX 1003.1c Library (libpthread.so) SYNOPSIS
#include <pthread.h> int pthread_key_create( pthread_key_t *key, void (*destructor)(void *)); STANDARDS
Interfaces documented on this reference page conform to industry standards as follows: IEEE Std 1003.1c-1995, POSIX System Application Program Interface PARAMETERS
Location where the new thread-specific data key will be stored. Procedure called to destroy a thread-specific data value associated with the created key when a thread terminates. Note that the argument to the destructor for the user-specified routine is the non-NULL value associated with a key. DESCRIPTION
This routine generates a unique, thread-specific data key that is visible to all threads in the process. The variable key provided by this routine is an opaque object used to locate thread-specific data. Although the same key value can be used by different threads, the values bound to the key by pthread_setspecific(3) are maintained on a per-thread basis and persist for the life of the calling thread. DECthreads imposes a maximum number of thread-specific data keys, equal to the symbolic constant PTHREAD_KEYS_MAX. Thread-specific data allows client software to associate "static" information with the current thread. For example, where a routine declares a variable static in a single-threaded program, a multithreaded version of the program might create a thread-specific data key to store the same variable. This routine generates and returns a new key value. The key reserves a cell within each thread. Each call to this routine creates a new cell that is unique within an application invocation. Keys must be generated from initialization code that is guaranteed to be called only once within each process. (See the pthread_once(3) description for more information.) When a thread terminates, its thread-specific data is automatically destroyed; however, the key remains unless destroyed by a call to pthread_key_delete(3). An optional destructor function can be associated with each key. At thread exit, if a key has a non-NULL destruc- tor pointer, and the thread has a non-NULL value associated with that key, the destructor function is called with the current associated value as its sole argument. Note that the order in which thread-specific data destructors are called at thread termination is undefined. Before each destructor is called, the thread's value for the corresponding key is set to NULL. After the destructors have been called for all non-NULL values with associated destructors, if there are still some non-NULL values with associated destructors, then this sequence of actions is repeated. If there are still non-NULL values for any key with a destructor after four repetitions of this sequence, DECthreads terminates the thread. At this point, any key values that represent allocated heap will be lost. Note that this occurs only when a destructor performs some action that creates a new value for some key. Your program's destructor code should attempt to avoid this sort of circularity. RETURN VALUES
If an error condition occurs, this routine returns an integer value indicating the type of error. Possible return values are as follows: Successful completion. The system lacked the necessary resources to create another thread-specific data key, or the limit on the total number of keys per process (PTHREAD_KEYS_MAX) has been exceeded. Insufficient memory exists to create the key. ERRORS
None RELATED INFORMATION
Functions: pthread_getspecific(3), pthread_key_delete(3), pthread_once(3), pthread_setspecific(3) Manuals: Guide to DECthreads and Programmer's Guide delim off pthread_key_create(3)
Man Page