Rind 8 gadi atpakaļ
vecāks
revīzija
4e68f96622

BIN
build/Toolchain/arm/libgfaipc.so.1.1.0


BIN
build/Toolchain/arm/libgfaipcd.so.1.1.0


BIN
build/Toolchain/x86_64/libgfaipc.so.1.1.0


BIN
build/Toolchain/x86_64/libgfaipcd.so.1.1.0


+ 7 - 3
src/locmtx.cpp

@@ -32,20 +32,24 @@
 CLocalMutex::CLocalMutex(void) : m_bInit(false)
 {
 	memset(&m_mutex, 0, sizeof(m_mutex));
+	memset(&m_mutexAttr, 0, sizeof(m_mutexAttr));
+	::pthread_mutexattr_init(&m_mutexAttr);
+	::pthread_mutexattr_settype(&m_mutexAttr, PTHREAD_MUTEX_RECURSIVE);
 }
 
 CLocalMutex::~CLocalMutex(void)
 {
 	Release();
+	::pthread_mutexattr_destroy(&m_mutexAttr);
 }
 
-bool CLocalMutex::Create(void)
+bool CLocalMutex::Create(bool bRecursive)
 {
 	if(!m_bInit)
 	{
-		if(!::pthread_mutex_init(&m_mutex, NULL))
+		if(!::pthread_mutex_init(&m_mutex, bRecursive ? &m_mutexAttr : NULL))
 		{
-			TRACE("CLocalMutex::Create: Created Mutex\n");
+			TRACE("CLocalMutex::Create: Created Mutex (recursive=%s)\n", bRecursive ? "true" : "false");
 			m_bInit = true;
 		}
 		else

+ 2 - 1
src/mutex.h

@@ -49,7 +49,7 @@ public:
 	CLocalMutex(void);
 	virtual ~CLocalMutex(void);
 
-	bool Create(void);
+	bool Create(bool bRecursive = false);
 	void Release(void);
 
 	bool Lock(void);
@@ -58,6 +58,7 @@ public:
 
 private:
 	bool m_bInit;
+	pthread_mutexattr_t m_mutexAttr;
 	pthread_mutex_t m_mutex;
 };