私は、可能な限り単純なマルチスレッド Qtコンソールアプリケーションを作成する方法を理解するのに非常に苦労しています。
QThread クラスの使用方法について、たくさんの記事を読みました。サブクラス QThread と言う人もいれば、QThread のワーカー クラス ラッパーを使用すると言う人もいます。
何度か試行錯誤した後も、マルチスレッドの Qt コンソール アプリケーションを動作させることはできませんでした。
今のところ、派手な Qt GUI は必要ありません。
誰かがコード例のスレッド部分を埋めるのを手伝ってくれませんか? テキストファイルから一度に1行を読み取るだけで、現時点でビジーではない各スレッド(4つのスレッドを使用したい)は、その行をstd::coutでできるだけ早くstdoutに出力するという考えです。印刷するだけです。これを簡単にするために、今のところ他の手の込んだ処理はありません。
#include <QCoreApplication>
#include <QFile>
#include <iostream>
/* QThread stuff here */
/* Don't know how to make it */
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
/* Create four instances of threads here and
put them to wait readed lines */
QFile file("file.txt");
file.open(QIODevice::ReadOnly | QIODevice::Text);
while(!file.atEnd()) {
/* Read lines here but where should they be saved?
Into a global variable like QList<QByteArray> list ?
So that each thread can read them from there or where ???? */
??? = file.readLine();
}
file.close();
a.exit();
}