2016-06-30 13 views
-1

私はこの問題を自分で解決しました!条件付きスレッド作成

私は各行が(1000000から0の間のランダムな)数が含まれC、で、ファイルを読んでいる:私は行ずつ読み

1121 
84 
928434 
9999 
70373 
... 

を、各ラインのために、私はいくつかの計算を行います大きな数字のデータをd_file.txtというファイルに書き込みます。ここで、dは、読み取った数字の有効数字のリストです。ファイルの書き込みには長い時間がかかると仮定して、multi-threadにコードを書きたいので、同時に複数のファイル(〜10)を書き込むことができます。 single threadCコードは明白ですが、私はコードを使用して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; 
} 
+0

いくつかの編集が必要です - ラッシュで書いてください。 –

+0

複数のスレッドはこのプログラムを高速化しません。あなたは1つのスレッドと同じように10スレッドでI/Oバインドされるのと同じようになりますが、おそらくヘッドサーチのオーバーヘッドが増えます。 –

+0

@JeremyFriesner私がfwrite()を使うとどうなりますか? –

答えて

-1

あなたは間違いなく、同時に、ファイル、およびファイルの複数のセクションを読むことができます。 thisので答えをチェックしてください。それだけでは不十分な場合は、SOとASCIIを並行して読み書きする方法を説明しているWeb上でさらに多くのことがあります。

+0

答えよりもコメントが多いです。重複の可能性のある提案? – user4581301

+0

まだ彼の質問に答えています。 –