我正在尝试并行执行一个程序,该程序从文件中成对重复读取字符串。我想使用omp原子,以确保在每个循环中都能正确读取该对。我将在代码中像这样使用它:
SELECT SUM(Time_of_Ping > NOW() - INTERVAL 24 HOUR)
FROM your_table
我的问题是,我不知道这些分类(读,写,更新,捕获)之间有什么区别,以便使用正确的分类。 getmystring(fp)是一次从文件中读取一个字符串的函数。
答案 0 :(得分:1)
似乎您选择了错误的OpenMP构造。目的似乎是一次只允许一个线程在您的块中执行。这意味着该块旨在成为关键区域,用于声明该块的指令为omp critical
:
#pragma omp critical
{
if(a = getmystring(fp)) fprintf(fpw, "A: %s\n", a);
if(b = getmystring(fp)) fprintf(fpw, "B: %s\n", b);
}