C++中多线程文件哈希
在一个项目中工作,以提高一个程序的性能,该程序将文件内容散列到标准散列SD5,sha 为了实现这一点,我试图合并多线程,但很难编写代码。任何提示或推荐的阅读资料都将不胜感激!我的代码如下所示 编辑:所以问题是,我如何在代码中使用多线程来加速它,例如,将文件的部分拆分并分配给不同的核心 )C++中多线程文件哈希,c++,multithreading,C++,Multithreading,在一个项目中工作,以提高一个程序的性能,该程序将文件内容散列到标准散列SD5,sha 为了实现这一点,我试图合并多线程,但很难编写代码。任何提示或推荐的阅读资料都将不胜感激!我的代码如下所示 编辑:所以问题是,我如何在代码中使用多线程来加速它,例如,将文件的部分拆分并分配给不同的核心 ) #include <fstream> using namespace std; #include "md5.h" #include "sha256.h" #include
#include <fstream>
using namespace std;
#include "md5.h"
#include "sha256.h"
#include "sha3.h"
#include <iostream>
int main(int, char**)
{
cout << " HASHING ALGORITHMS:" << endl;
cout << "................................................." << endl << endl;
MD5 md5;
SHA256 sha256;
SHA3 sha3;
std::string hash1 = md5("enwik8");
std::cout << "Hash of File: " << md5(hash1) << endl << endl;
//Next part is to hash the actual content of file.
/*
ifstream myReadFile;
myReadFile.open("data.txt.txt");
char output[100];
if (myReadFile.is_open()) {
while (!myReadFile.eof()) {
/*
myReadFile >> output;
cout << "Input: " << output << endl << endl;
sha3(output);
cout <<"SHA256: ";
std::cout << sha256(output) << std::endl;
cout << "SHA3: ";
std::cout << sha3(output) << endl << endl;
}
myReadFile.close();
}
else {
cout << "Failed loading file.";
}
*/
return 0;
}
很少有有用的哈希函数不是固有的顺序函数,因此多个处理器将没有帮助 如果您的程序打算计算每个文件的多个散列,那么从程序片段中看不出这一点,那么可以并行计算每个散列。在这种情况下,您的主要任务是缓冲区管理,这可能是一个简单的过程,如将整个文件映射到内存中,然后为每个哈希函数分配一个线程
如果你正在寻找并行编程的实践,可以划分的问题是你的朋友。排序就是一个很好的例子:您有N个项目和M个处理器;因此,您可以将ONlgN收缩为O1+N/MlgN/M您确定是处理而不是文件io导致代码运行缓慢吗?顺便说一句,你忘了问一个问题。如果这是有效的代码,您需要查看,您应该将此移到问题所在?@user463035818是的,正是文件io使代码变慢了,但希望了解更多关于多线程的知识,以及如何在代码中使用多线程。哦,对了,对不起,我会的。谢谢:所以问题是,我如何在代码中使用多线程来加速它,例如,将文件的部分拆分并分配给不同的核心。您首先计划如何分割文件并将部件分配到不同的磁盘?如果磁盘IO是您的瓶颈,那么用更多线程敲击一个磁盘实际上会降低IO性能。。。。有很多教程/示例