我正在尝试使用OpenMP并行化以下函数。如果我使用#pragma omp parallel for private(dbf,t_tmp)
,我在读取数据库文件时会得到一个BAD_EXEC。 PreFilter
是计算最密集的任务,应该并行化。最佳情况是PreFilter
的IO和从属的一个主线程。这是可以使用OpenMP还是我应该使用pthreads?
for(int it=1; it <= dbfiles->size(); ++it)
{
...
dbf = openFILE(db_result->db_name,(char *)&id);
...
readHMMFile(dbf,db_result->db_name,filename,t_tmp[curr_index],start_pos);
if(curr_index==0){ // modulo 4 ==0
t_vec[bin]->MapFourHMMsToHMM4(t_tmp[0],t_tmp[1],t_tmp[2],t_tmp[3]);
PreFilter(q_vec,t_vec[bin]);
}
fclose(dbf);
}