January 30, 2003 PTHREAD_MUTEX_INIT 3

### NAME

pthread_mutex_init - create a mutex

### LIBRARY

POSIX Thread Library (libpthread, -lpthread)

### SYNOPSIS

```int` pthread_mutex_init(```pthread_mutex_t * restrict mutex``, const pthread_mutexattr_t * restrict attr`)

### DESCRIPTION

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

### RETURN VALUES

If successful, pthread_mutex_init(``) will return zero and put the new mutex id into ```mutex`, otherwise an error number will be returned to indicate the error.

### ERRORS

pthread_mutex_init(``) shall fail if:

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

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

pthread_mutex_init(``) may fail if:

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

### SEE ALSO

pthread_mutex_destroy(3), pthread_mutex_lock(3), pthread_mutex_trylock(3), pthread_mutex_unlock(3)

### STANDARDS

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