c – 如何在OpenMP中使用锁?

我有两个C代码在2个不同的核心上运行.它们都写入同一个文件.

如何使用OpenMP并确保没有崩溃?

解决方法:

您需要OMP_SET_LOCK / OMP_UNSET_LOCK函数:https://computing.llnl.gov/tutorials/openMP/#OMP_SET_LOCK.基本上:

omp_lock_t writelock;

omp_init_lock(&writelock);

#pragma omp parallel for
for ( i = 0; i < x; i++ )
{
    // some stuff
   omp_set_lock(&writelock);
    // one thread at a time stuff
    omp_unset_lock(&writelock);
    // some stuff
}

omp_destroy_lock(&writelock);

虽然特定的API调用是不同的,但大多数锁定例程(如pthreads信号量和sysv信号量)都适用于这种逻辑.

上一篇:Python:迭代字典而另一个线程修改字典


下一篇:mysql – 空闲连接加上模式修改查询导致锁定数据库