У меня есть 2 файла, и я хочу, чтобы каждое ядро считывало его собственный файл (каждый файл имеет 5 строк) и отображает его содержимое
в этом коде У меня есть 2 ядра (core0, core1) 0 читайте содержимое ядра1 (5 строк). и core1 читал 4 строки из своего контента.Чтение двух разных файлов одновременно
Я попытался сделать это так, как если бы остальные условия, и у каждого файла есть свой собственный читатель, но та же проблема все еще существует. Что мне делать?
#include <vector>
#include <stdio.h>
#include <time.h>
#include <mpi.h>
#include <omp.h>
#include <fstream>
#include <iostream>
using namespace std;
void func2(int CoreID)
{
int iFace;
int iFaces=0;
if (CoreID==0)
{
FILE* imgListFile = 0;
char imgFilename[5012];
char actualPath[90]="C:\\DaliaDaliaSh\\TrainingFiles\\File10img_0_C";
strcat(actualPath , "0.txt");
imgListFile= freopen(actualPath , "r",stdin);
while (fgets(imgFilename, 5012, imgListFile))
{
++iFaces;
printf("** Core = %d , Path = %s\n" , CoreID , imgFilename);
}
rewind(imgListFile);
}
else if (CoreID==1)
{
FILE* imgListFile2 = 0;
char imgFilename2[5012];
char actualPath2[90]="C:\\DaliaDaliaSh\\TrainingFiles\\File10img_0_C";
strcat(actualPath2 , "1.txt");
imgListFile2= freopen(actualPath2 , "r",stdin);
while (fgets(imgFilename2, 5012, imgListFile2))
{
++iFaces;
printf("** Core = %d , Path = %s\n" , CoreID , imgFilename2);
}
rewind(imgListFile2);
}
//printf ("*ID = %d open actualPath= %s\n" , myId , actualPath);
printf("core %d , iFaces= %d \n", CoreID , iFaces);
}
void main(int argc,char **argv)
{
MPI::Init(argc,argv);
int threadnum=2;
omp_set_num_threads(threadnum);
#pragma omp parallel
{
int CoreID = omp_get_thread_num();
int x ;
func2(CoreID);
cout <<"@@@@after call func inside pragma \n" ;
}
MPI ::Finalize();
}
Это может быть полезно, http://stackoverflow.com/a/11096742/5781248 –
Не уверен, что я понял ваш вопрос правильно, но я вижу состояние гонки при выполнении printf. Это необходимо защитить с помощью функции mutex/std :: unique_lock/или какой-либо другой блокировки. – Arunmu
Большое спасибо за ваши комментарии :) –