is it necessary to call pthread_mutex_destroy on a mutex?

(The class is not copyable - http://www.boost.org/doc/libs/1_53_0/boost/noncopyable.hpp) The thing that I don't understand - is it considered an error to not call pthread_mutex_destroy in the destructor? The documentation I have read does not state that destroy must be called. Does anyone know, what does pthread_mutex_destroy actually do and under what conditions is it required? EDIT Does the answer for pthread_mutex_destroy also apply to pthread_cond_destroy , etc? They seem almost like useless functions to me, unless pthread_mutex_init et. al. are allocating memory? (the docs, to me, aren't entirely clear on this.) It doesn't hurt me to call destroy anyway, so the question is largely academic. On linux anyway, it seems destroy only sets the mutex to an invalid state:

int __pthread_mutex_destroy (mutex) pthread_mutex_t *mutex; < if ((mutex->__data.__kind & PTHREAD_MUTEX_ROBUST_NORMAL_NP) == 0 && mutex->__data.__nusers != 0) return EBUSY; /* Set to an invalid value. */ mutex->__data.__kind = -1; return 0; >