it seems if you initialize the mutex by pthread_mutex_init(), u will have to
call pthread_mutex_destroy().
what if you just use the const initializer?
in ctor:
_lock (PTHREAD_MUTEX_INITIALIZER);
in dtor:
pthread_mutex_destroy(&lock) // is this necessary?