您的位置:首页 > 其它

关于pthread_mutex_t的初始化

2016-03-09 19:10 417 查看
class MyLock

{

private:

pthread_mutex_t m_lock;

public:

MyLock()

{

// m_lock = PTHREAD_MUTEX_INITIALIZER; //使用这种方法初始化时GCC编译无法通过

pthread_mutex_init(&m_lock,NULL);

}

~MyLock()

{

}

void Lock()

{

pthread_mutex_lock(&m_lock);

}

void unLock()

{

pthread_mutex_unlock(&m_lock);

}

};

Unix网络编程卷一有讲:在静态分配时,比如全局变量,我们必须将它初始化为PTHREAD_MUTEX_INITIALIZER,而如果在共享内存中分配时,必须用pthread_mutex_init来初始化。

在pthread.h头文件中PTHREAD_MUTEX_INITIALIZER是这样定义的:

# define PTHREAD_MUTEX_INITIALIZER \

{ { 0, 0, 0, 0, 0, 0, { 0, 0 } } }

如果不对其进行初始化,对于某些系统来说如Solaris,静态分配就是初始化为零,所以没什么问题。但并非所有的系统都是这样的,如Digtal Unix将初始化常值定义为非0。

原文地址:http://www.blogbus.com/kavine-logs/46146510.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: