January 30, 2003 PTHREAD_COND_INIT 3

### NAME

pthread_cond_init - create a condition variable

### LIBRARY

POSIX Thread Library (libpthread, -lpthread)

### SYNOPSIS

```int` pthread_cond_init(```pthread_cond_t * restrict cond``, const pthread_condattr_t * restrict attr`)

### DESCRIPTION

The pthread_cond_init(``) function creates a new condition variable, with attributes specified with ```attr`. If ```attr` is NULL the default attributes are used.

Condition variables are intended to be used to communicate changes in the state of data shared between threads. Condition variables are always associated with a mutex to provide synchronized access to the shared data. A single predicate should always be associated with a condition variable. The predicate should identify a state of the shared data that must be true before the thread proceeds.

### RETURN VALUES

If successful, the pthread_cond_init(``) function will return zero and put the new condition variable id into ```cond`, otherwise an error number will be returned to indicate the error.

### ERRORS

pthread_cond_init(``) shall fail if:

[```EAGAIN`]
  The system lacks the resources to initialize another condition variable.

[```ENOMEM`]
  The process cannot allocate enough memory to initialize another condition variable.

pthread_cond_init(``) may fail if:

[```EINVAL`]
  The value specified by ```attr` is invalid.

### SEE ALSO

pthread_cond_broadcast(3), pthread_cond_destroy(3), pthread_cond_signal(3), pthread_cond_timedwait(3), pthread_cond_wait(3)

### STANDARDS

pthread_cond_init(``) conforms to ISO/IEC 9945-1:1996 (``POSIX.1'') .