11
// TODO: error checking
12
pthread_mutex_init(&mutex, NULL);
15
pthread_mutex_lock(&mutex);
18
pthread_mutex_unlock(&mutex);
22
class tPThreadRecursiveMutex
23
: public tPThreadMutex
26
pthread_mutex_t mutex;
28
tPThreadRecursiveMutex() {
29
// TODO: error checking
30
pthread_mutexattr_t mta;
32
pthread_mutexattr_settype(&mta, PTHREAD_MUTEX_RECURSIVE);
33
pthread_mutex_init(&mutex, &mta);
52
template <class T, class MutexT>
58
virtual void add(const T& item) {
59
tPThreadGuard<MutexT> mL(&mutex);
64
virtual size_t size() {
65
tPThreadGuard<MutexT> mL(&mutex);
71
tPThreadGuard<MutexT> mL(&mutex);
74
// TODO: throw a specific exception?
75
throw std::exception();