using pthread_mutex_t*, because no support for process synchronization in std::mutex