Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > P


Pthread Library
HP-UX 11i Version 3: February 2007

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index


pthread_cond_init(), pthread_cond_destroy() — initialize or destroy a condition variable


#include <pthread.h>

int pthread_cond_init( pthread_cond_t *__restrict cond, const pthread_condattr_t *__restrict attr );

pthread_cond_t cond = PTHREAD_COND_INITIALIZER;

int pthread_cond_destroy( pthread_cond_t *cond );



Pointer to the condition variable to be initialized or destroyed.


Pointer to the attributes object that defines the characteristics of the condition variable to be initialized. If the pointer is NULL, default attributes are used.


The pthread_cond_init() function initializes the condition variable cond with the attributes attr. If attr is NULL, the default condition variable attributes are used to initialize the attributes object. See pthread_condattr_init(3T) for a list of the default condition variable attributes. After successful initialization, the condition variable may be used in condition variable operations. A condition variable should be initialized only once or the resulting behavior is undefined. The pthread_once() function provides a way to ensure that a condition variable is only initialized once.

The macro PTHREAD_COND_INITIALIZER can be used to initialize condition variables that are statically allocated. These condition variables will be initialized with default attributes. The pthread_cond_init() function does not need to be called for statically initialized condition variables.

If the process-shared attribute in the condition variable attributes object referenced by attr is defined as PTHREAD_PROCESS_SHARED, the condition variable must be allocated such that the processes sharing the condition variable have access to it. This may be done through the memory-mapping functions (see mmap(2)) or the shared memory functions (see shmget(2)).

pthread_cond_destroy() destroys the condition variable cond. This function may set cond to an invalid value. The destroyed condition variable can be reinitialized using the function pthread_cond_init(). If the condition variable is used after destruction in any condition variable call, the resulting behavior is undefined.

A condition variable should be destroyed only when there are no threads currently blocked on it. Destroying a condition variable that is currently in use results in undefined behavior.


Upon successful completion, pthread_cond_init() and pthread_cond_destroy() return zero. Otherwise, an error number is returned to indicate the error (the errno variable is not set).


If any of the following occur, the pthread_cond_init() function returns the corresponding error number:


The system does not have the available resources (other than memory) to initialize the condition variable.


The specified condition variable is an already initialized condition variable. However, getting EBUSY for reinitializing the condition variable cannot be expected all the time since the behavior of reinitializing the condition variable is undefined.


The cond parameter points to an illegal address.


The value specified by cond or attr is invalid.


There is insufficient memory available in which to initialize the condition variable.

If any of the following occur, the pthread_cond_destroy() function returns the corresponding error number:


An attempt to destroy cond while it is in use by another thread.


cond is not a valid condition variable.


The space for condition variable must be allocated before calling pthread_cond_init(). Undefined behavior will result if the process-shared attribute of attr is PTHREAD_PROCESS_SHARED and the space allocated for the condition variable is not accessible to cooperating threads.


pthread_cond_init() and pthread_cond_destroy() were derived from the IEEE POSIX P1003.1c standard.


pthread_cond_init(): POSIX 1003.1c. pthread_cond_destroy(): POSIX 1003.1c.

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.