互斥变量的数量限制,pthread_mutex_init返回值12,该如何处理
互斥变量的数量限制,pthread_mutex_init返回值12
class CMyMutex
{
public:
CMyMutex()
{
pthread_mutexattr_init(&m_attr);
pthread_mutexattr_settype(&m_attr,PTHREAD_MUTEX_RECURSIVE_NP);
pthread_mutex_init(&m_mutexPosix, &m_attr);
}
~CMyMutex(){pthread_mutex_destroy(&m_mutexPosix);}
void Lock() {pthread_mutex_lock(&m_mutexPosix);}
void Unlock() {pthread_mutex_unlock(&m_mutexPosix);}
private:
pthread_mutexattr_t m_attr;
pthread_mutex_t m_mutexPosix;
};
pthread_mutex_init返回12,m_attr值不为0,m_mutexPosix为0,
查了一下,说是同时拥有的互斥锁太多,怎么破?请各路大神帮忙,真的有限制吗,最大能有多少个?
------解决思路----------------------
你的代码都是一些声明,让我怎么帮你?
还是直接把分给我吧~~
------解决思路----------------------
互斥锁没有个数限制,但是楼主你这个是递归互斥锁,递归次数是有限制的。超出时会得到错误信息EAGAIN
class CMyMutex
{
public:
CMyMutex()
{
pthread_mutexattr_init(&m_attr);
pthread_mutexattr_settype(&m_attr,PTHREAD_MUTEX_RECURSIVE_NP);
pthread_mutex_init(&m_mutexPosix, &m_attr);
}
~CMyMutex(){pthread_mutex_destroy(&m_mutexPosix);}
void Lock() {pthread_mutex_lock(&m_mutexPosix);}
void Unlock() {pthread_mutex_unlock(&m_mutexPosix);}
private:
pthread_mutexattr_t m_attr;
pthread_mutex_t m_mutexPosix;
};
pthread_mutex_init返回12,m_attr值不为0,m_mutexPosix为0,
查了一下,说是同时拥有的互斥锁太多,怎么破?请各路大神帮忙,真的有限制吗,最大能有多少个?
------解决思路----------------------
你的代码都是一些声明,让我怎么帮你?
还是直接把分给我吧~~
------解决思路----------------------
互斥锁没有个数限制,但是楼主你这个是递归互斥锁,递归次数是有限制的。超出时会得到错误信息EAGAIN