【发布时间】:2018-04-20 11:28:15
【问题描述】:
致力于一个项目以提高将文件内容散列为标准散列(md5,sha ...)的程序的性能
我试图结合多线程来实现这一点,但很难编写代码。任何提示或推荐读物将不胜感激!我的代码如下所示
编辑:所以问题是我如何在这段代码中使用多线程来加速它,例如拆分文件的一部分并将它们分配给不同的内核。
;
#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;
}
【问题讨论】:
-
您确定是处理而不是文件 io 使您的代码运行缓慢吗?顺便说一句,你忘了问一个问题。如果这是工作代码并且您想要查看,您应该将其移至codereview.stackexchange.com
-
有什么问题?
-
@user463035818 是的,是文件 io 使代码变慢,但目前希望了解更多关于多线程以及如何在此代码中使用它的知识。哦,对了,抱歉会那样做。谢谢:)
-
所以问题是我如何在这段代码中使用多线程来加速它,例如拆分文件的一部分并将它们分配给不同的核心。 如何做您首先计划拆分文件并将部分分配到不同的磁盘?如果磁盘 IO 是您的瓶颈,那么用更多线程敲击一个磁盘实际上会降低您的 IO 性能。
-
看看boost::coroutine....里面有很多教程/例子boost.org/doc/libs/1_67_0/libs/coroutine/doc/html/index.html
标签: c++ multithreading