如何创建一个带锁的指针数组并检查指针是否空闲?

How to create an array of pointers with lock and check the pointer free or not?

本文关键字:指针 数组 检查 是否 创建 何创建 一个      更新时间:2023-10-16

我有一个数组指针。

我可以使用互斥锁进行锁定和解锁吗?同时,另一个线程以相同的和校验矩阵[h]运行。

int **matrix;
matrix =new int[20];
for(int i=0; i<20; i++)
{
matrix[i]= new int[20];
}
#pragma omp parallel for nowait
for(int h=0; h< 20; ++h)
{
if(matrix[h].isfree()==true)
{
lock(matrix[h]);
//do something...
unlock(matrix[h]);
}
else
{
//that array matrix[h] is not free. 
skip++;
}
}

如果你的意图是永远不要阻塞线程,那么使用std::atomic_bool就足够了。 否则,您应该将std::lock_guardstd::mutex结合使用。

您可以使用omp_lock_t mylock;来声明锁,而不是像使用 openmp 那样pthread_mutex_t mylock;。然后,您可以初始化锁并使用omp_set_lock(&mylock);放置锁,并使用omp_unset_lock(&mylock);来移除锁。看看这个 -> stackoverflow.com/questions/2396430/how-to-use-lock-in-openmp