一段代码用OpenMP实现
信谦 2008-05-23 05:27:14 我正在用OpenMP实现Huffman压缩算法,现在碰到的问题是文件读写不易并行的问题。
即使是用OpenMP实现for循环,也会由于读写而存在并行问题,也试过SECTIONS等,还是有数据冲突;
下面是我的一部分的代码,哪位能给点意见吗,万分感激!!!
unsigned char rbuff[1024]; //每次1024个字节 pan
UINT gcnt=1024;
ULONGLONG gtotal=0,flen;
CString bitbuff="";
flen=m_readf.GetLength(); //文件长度flen
#ifdef _OPENMP
omp_set_num_threads(NUM_THREADS);
#endif
while(gcnt == 1024)
{
gcnt=m_readf.Read(rbuff,1024); //每次读取1024个字符(字节) 存入rbuff
for(int i=0;i<gcnt;i++)
{
bitbuff+=HuffCode[rbuff[i]];
while(bitbuff.GetLength()>=8)
m_file<<BitStrToChar(bitbuff); //重新编码后转换为字符型 pan
}
if(ShowPro)
{//设置当前光标位置
SetConsoleCursorPosition(hStdout,ConsoleScreenBufferInfo.dwCursorPosition);
gtotal+=gcnt;
cout<<int(float(gtotal)/flen*100)<<"%\n";
}
}