iOS上PTHREAD_MUTEX_INITIALIZER的行为

时间:2014-03-11 10:13:50

标签: ios pthreads

假设有几个类,每个类都使用类似下面的代码来保护它们的区域。

static pthread_mutex_t _mutex = PTHREAD_MUTEX_INITIALIZER;
[..]
pthread_mutex_lock(&_mutex);
//some code
pthread_mutex_unlock(&_mutex);

问题: 所有这些类共享相同的互斥锁(因此,如果s / o锁定互斥锁,则其他任何人都无法访问受保护区域)。或者每个PTHREAD_MUTEX_INITIALIZER创建一个新的互斥锁吗?

根据PTHREADS正在运行的系统,文献似乎对此主题含糊不清。

1 个答案:

答案 0 :(得分:0)

这与PTHREAD_MUTEX_INITIALIZER(甚至是Pthreads)无关,也不依赖于系统。

这是一个基本的C ++语言问题。您正在使用static变量,因此只有一个变量。您没有显示足够的代码来知道它是否是类的静态成员(因此每个类类型有一个_mutex,而不是每个对象)或全局静态(因此每个文件只有一个_mutex