【发布时间】:2018-08-24 06:15:37
【问题描述】:
我正在查看一些将mutexs 数组用于某些代码的关键区域的代码:
void alter(int item_nr)
{
pthread_mutex_lock(&(items_sem[item_nr]));
items[item_nr] = 1; // Assume this array is in shared memory
pthread_mutex_unlock(&(items_sem[item_nr]));
}
进入这个函数的每个线程都有一个item_nr,它传递给函数。进入该函数的线程数与数组中的项数完全相同,因此每个线程只访问一个项,并且每次进入该线程时访问的是同一个项。
我是并行编码的新手,所以这个概念对我来说没有多大意义。我想你只需要一个mutex 来保护一些共享内存,这样其他线程就无法访问它,但是使用mutexs 数组,它不会只锁定一个线程而不锁定其他线程吗?
【问题讨论】:
-
为什么不使用
std::mutex? -
@TheUnknown,我更喜欢这样,但这不是此代码的选项。不是我的选择。
标签: c++ multithreading pthreads