Условное изготовление резьбы
Я сделал эту проблему сам!
Я читаю файл, в C
где каждая строка содержит число (случайное число от 0 до 1000000):
1121
84
928434
9999
70373
...
Я читаю построчно, и для каждой строки я делаю некоторые вычисления и записываю большой кусок данных в файл с именем d_file.txt
где d
является значащей цифрой списка прочитанного числа. Предполагается, что запись в файл занимает много времени, поэтому я хочу написать код в multi-thread
поэтому я могу писать в несколько файлов (~10) одновременно. В то время как single thread
C
код очевиден, мне интересно, как multi-thread
код с использованием pthread
похоже.
single-thread
Код C:
#include <fstream>
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int func(int a)
{
//assume the data is big and writing takes a long time
int data = a;
return data;
}
int main()
{
ifstream in("numbers.txt");
int a;
while(in >> a)
{
stringstream ss;
ss << a%10;
string str;
ss >> str;
str += "_File.txt";
ofstream out(str.c_str(), fstream::in | fstream::out | fstream::trunc);
//This is blocking, if write takes long
//but can be rewritten in a multi-thread fashion
// to allow upto 10 simultaneous file write
out << func(a) << endl;
}
return 0;
}
1 ответ
Вы можете определенно прочитать файл и несколько разделов файла одновременно. Проверьте этот так ответ. Если вам этого недостаточно, в SO и в Интернете есть еще много объяснений, как параллельно читать и писать в ASCII.