假设有几个类,每个类都使用类似下面的代码来保护它们的区域。
static pthread_mutex_t _mutex = PTHREAD_MUTEX_INITIALIZER;
[..]
pthread_mutex_lock(&_mutex);
//some code
pthread_mutex_unlock(&_mutex);
问题:
所有这些类共享相同的互斥锁(因此,如果s / o锁定互斥锁,则其他任何人都无法访问受保护区域)。或者每个PTHREAD_MUTEX_INITIALIZER
创建一个新的互斥锁吗?
根据PTHREADS正在运行的系统,文献似乎对此主题含糊不清。
答案 0 :(得分:0)
这与PTHREAD_MUTEX_INITIALIZER
(甚至是Pthreads)无关,也不依赖于系统。
这是一个基本的C ++语言问题。您正在使用static
变量,因此只有一个变量。您没有显示足够的代码来知道它是否是类的静态成员(因此每个类类型有一个_mutex
,而不是每个对象)或全局静态(因此每个文件只有一个_mutex
)