int pthread_mutex_init (pthread_mutex_t *mutex,
const pthread_mutex_attr_t *mutexattr);
int pthread_mutex_destroy (pthread_mutex_t *mutex);
int pthread_mutex_lock (pthread_mutex_t *mutex);
int pthread_mutex_trylock (pthread_mutex_t *mutex);
int pthread_mutex_timedlock (pthread_mutex_t *restrict mutex,
const struct timespec *abs_timeout);
int pthread_mutex_unlock (pthread_mutex_t *mutex);
error checking mutex
recursive mutex
fast mutex