|
VMS Help DCE, DCE_THREADS, Application Routines, pthread_keycreate *Conan The Librarian |
NAME
pthread_keycreate - Generates a unique thread-specific data
key value
SYNOPSIS
#include <pthread.h>
int pthread_keycreate( pthread_key_t *key,
pthread_destructor_t destructor );
PARAMETERS
key Value of the new thread-specific data key.
destructor Procedure to be called to destroy a data value
associated with the created key when the thread
terminates.
DESCRIPTION
The pthread_keycreate() routine generates a unique thread-specific
data key value. This key value identifies a thread-specific data
value, which is an address of memory generated by the client containing
arbitrary data of any size.
Thread-specific data allows client software to associate information
with the current thread.
For example, thread-specific data can be used by a language runtime
library that needs to associate a language-specific thread-private data
structure with an individual thread. The thread-specific data routines
also provide a portable means of implementing the class of storage
called thread-private static, which is needed to support parallel
decomposition in the FORTRAN language.
This routine generates and returns a new key value. Each call to this
routine within a process returns a key value that is unique within an
application invocation. Calls to pthread_keycreate() must occur in ini-
tialization code guaranteed to execute only once in each process. The
pthread_once() routine provides a way of specifying such code.
When multiple facilities share access to thread-specific data, the
facilities must agree on the key value that is associated with the con-
text. The key value must be created only once and needs to be stored in
a location known to each facility. (It may be desirable to encapsulate
the creation of a key, and the setting and getting of context values for
that key, within a special facility created for that purpose.)
When a thread terminates, thread-specific data is automatically des-
troyed. For each thread-specific data currently associated with the
thread, the destructor routine associated with the key value of that
context is called. The order in which per-thread context destructors are
called at thread termination is undefined.
RETURN VALUES
If the function fails, errno may be set to one of the following values:
Return Error Description
_________________________________________________________________
0 Successful completion.
-1 [EINVAL] The value specified by key is invalid.
-1 [EAGAIN] An attempt was made to allocate a key when
the key namespace is exhausted. This is not
a temporary condition.
-1 [ENOMEM] Insufficient memory exists to create the key.
RELATED INFORMATION
FUNCTIONS: pthread_getspecific
pthread_setspecific
|
|