有我的问题:
我有很多相同大小的文件(超过1000个)(几个Mb)。我必须阅读它们并提取一些信息。信息提取的这一步需要一些时间,所以这次我可以使用(至少我希望如此)读取另一个文件。我尝试做的是:
#pragma omp parallel for
for (int i=0; i<FilesCount; i++)
{
myData Data;
#pragma omp critical
{
Data.ReadDataFromFile (FileNames[i]);
}
//Operate with the Data and extract some information
}
它不能像我期望的那样工作。我也尝试过使用:
#pragma omp ordered
,结果相同 - 只使用一个线程。
其他OpenMP
的东西工作正常。也许问题是我使用fstream
进行阅读?
它有什么问题以及如何正确地做到这一点?
答案 0 :(得分:0)
标有
的块中的所有内容#pragma omp critical
一次只能由一个线程执行。所有其他线程必须等到当前线程离开该块。