私はこの問題を自分で解決しました!条件付きスレッド作成
私は各行が(1000000から0の間のランダムな)数が含まれC
、で、ファイルを読んでいる:私は行ずつ読み
1121
84
928434
9999
70373
...
を、各ラインのために、私はいくつかの計算を行います大きな数字のデータをd_file.txt
というファイルに書き込みます。ここで、d
は、読み取った数字の有効数字のリストです。ファイルの書き込みには長い時間がかかると仮定して、multi-thread
にコードを書きたいので、同時に複数のファイル(〜10)を書き込むことができます。 single thread
C
コードは明白ですが、私はコードを使用して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つのスレッドと同じように10スレッドでI/Oバインドされるのと同じようになりますが、おそらくヘッドサーチのオーバーヘッドが増えます。 –
@JeremyFriesner私がfwrite()を使うとどうなりますか? –