pthread_key_create man page on DigitalUNIX

Man page or keyword search:  
man Server   12896 pages
apropos Keyword Search (all sections)
Output format
DigitalUNIX logo
[printable version]

pthread_key_create(3)					 pthread_key_create(3)

       pthread_key_create - Generates a unique thread-specific data key

       #include <pthread.h>

       int pthread_key_create(
	       pthread_key_t *key,
	       void (*destructor)(void *) );

       DECthreads POSIX 1003.1c Library (

       Interfaces  documented on this reference page conform to industry stan‐
       dards as follows:

       IEEE Std 1003.1c-1995, POSIX System Application Program Interface

       Location where the new thread-specific data key will be stored.	Proce‐
       dure 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 associ‐
       ated with a key.

       This routine generates a unique, thread-specific data key that is visi‐
       ble  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 val‐
       ues 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	multi‐
       threaded 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

       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 associ‐
       ated with each key. At thread exit, if a key has a non-NULL  destructor
       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	corre‐
       sponding 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 destruc‐
       tor performs some action that creates a new value for some  key.	  Your
       program's  destructor  code should attempt to avoid this sort of circu‐

       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 num‐
       ber of keys per process (PTHREAD_KEYS_MAX) has been exceeded.  Insuffi‐
       cient memory exists to create the key.


       Functions:	 pthread_getspecific(3),	pthread_key_delete(3),
       pthread_once(3), pthread_setspecific(3)

       Manuals: Guide to DECthreads and Programmer's Guide


List of man pages available for DigitalUNIX

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
Vote for polarhome
Free Shell Accounts :: the biggest list on the net