我正在尝试对此函数实现并行性,我希望它尽可能多地占用线程,并将结果写入文件。
结果需要以递增的顺序写入文件,因此需要先写入第一个结果,然后再写入第二个,依此类推。
keyGen 函数只是一个整数 m 的 MD5,用作每个链的起点。Reduction32 是一个归约函数,它将前 8 个字节加上 t 并返回该值。当一个链到达它的端点时,它被存储在二进制文件中。
有没有一种聪明的方法可以使这种平行?没有搞砸端点存储的顺序?
void tableGenerator32(uint32_t * text){
int mMax = 33554432, lMax = 236;
int m, t, i;
uint16_t * temp;
uint16_t * key, ep[2];
uint32_t tp;
FILE * write_ptr;
write_ptr = fopen("table32bits.bin", "wb");
for(m = 0; m < mMax ; m++){
key = keyGen(m);
for (t = 0; t < lMax; t++){
keyschedule(key);
temp = kasumi_enc(text);
tp = reduction32(t,temp);
temp[0]=tp>>16;
temp[1]=tp;
for(i=0; i < 8; i++){
key[i]=temp[i%2];
}
}
for(i=0;i<2;i++)
ep[i] = key[i];
fwrite(ep,sizeof(ep),1,write_ptr);
}
fclose(write_ptr);
}