2016-11-03 5 views
0

私は、ディスクから複数の大きなページを読み取り、いくつかの範囲検索を実行するプログラムを開発しています。プログラムは複数のページから読み取り、クエリ結果を出力ページに書き込みます。出力の順序を維持して、入力の順序に対応させる必要があります。主な機能はディスクから読み込むプログラムをマルチスレッド化することをお勧めしますか?

しかし、プログラムは複数の読み込み後に非常に遅くなるので、私はマルチスレッドプログラムを使って一度にいくつかの検索を実行することを考えています。私は4コアのLinuxマシンを持っており、私はこのプログラムの2つのスレッドを持っていたいと思います。いいアイデアですか?出力ファイルの順序をどのように維持できますか?どのスレッドが最初に終了するのか分からないので、ロックは役に立たないでしょう。

どうすればよいですか?

おかげ

更新

:これは、SQLライブラリのいずれかの種類を使用せずに行われなければなりません。

+1

プログラムは、データを処理しますか?読んでいると、複数のコアがあなたを助けません。複数のディスクやSSDを入手すると役立ちます。 – Joni

+0

読書は問題です – Salma

答えて

0

この場合、スレッディングは明らかに良いアイデアです。 QtのqtConcurrentモジュールを使用して、mapReduceの手法を使用して結果を整えるには、良い助けを得ることができます。 1つ以上のページを取得し、検索結果をリストに返すスレッドに渡すという考え方です。 すべてのスレッド/タスクは一意のインデックスを持つため、最後にインデックス2のスレッドから返されたリストは、インデックス1のスレッドによって返されたリストの後に配置されます。

関連する問題