#include <pthread.h>
#include <iostream>
-BotMutex::BotMutex ()
+BotMutex::BotMutex (bool recursive)
{
pthread_t self = pthread_self ();
std::cerr << "Mutex Init..."
<< " Mutex: " << &mutex
<< " Thread: " << &self
<< std::endl;
- pthread_mutex_init (&mutex, 0);
+ pthread_mutexattr_init (&attrs);
+
+ if (recursive)
+ pthread_mutexattr_settype (&attrs, PTHREAD_MUTEX_RECURSIVE);
+
+ pthread_mutex_init (&mutex, &attrs);
+
}
BotMutex::~BotMutex ()
<< " Thread: " << &self
<< std::endl;
pthread_mutex_destroy (&mutex);
+ pthread_mutexattr_destroy (&attrs);
}
void BotMutex::lock ()