Условное изготовление резьбы

Я сделал эту проблему сам!

Я читаю файл, в Cгде каждая строка содержит число (случайное число от 0 до 1000000):

1121
84
928434
9999
70373
...

Я читаю построчно, и для каждой строки я делаю некоторые вычисления и записываю большой кусок данных в файл с именем d_file.txt где d является значащей цифрой списка прочитанного числа. Предполагается, что запись в файл занимает много времени, поэтому я хочу написать код в multi-thread поэтому я могу писать в несколько файлов (~10) одновременно. В то время как single threadC код очевиден, мне интересно, как 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.

Другие вопросы по тегам