【发布时间】:2013-09-06 11:08:26
【问题描述】:
我很难理解如何使最简单的工作 多线程 Qt 控制台 应用程序。
我已经阅读了大量关于如何使用 QThread 类的资料。 他们中的一些人说是 QThread 的子类,其他人说使用 QThread 的工作类包装器。
经过多次尝试和重试后,我仍然无法使多线程工作 Qt 控制台应用程序。
现在我不需要任何花哨的 Qt Gui。
有人可以帮我填写示例代码的线程部分吗? 它一次只从文本文件中读取一行,其想法是目前不忙的每个线程(我想使用 4 个线程)将尽快使用 std::cout 将该行打印到标准输出。只需打印它,暂时没有其他花哨的处理东西可以让我保持简单。
#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();
}
【问题讨论】:
-
在多线程应用程序中,您不会使用全局变量。这不安全。
-
为什么你仍然希望它是多线程的?你的目标是什么?当然,它是否是 GUI 应用程序并不重要。
-
好吧,我的最终目标是制作一个简单的控制台网络客户端应用程序,其中包含多线程 waitForConnected() TcpSocket 调用。但现在我只需要知道如何使用简单的示例代码进行任何多线程处理。是的,那些 waitForConnected() 调用需要每个不同的主机名,我将从主线程中的文本文件中读取它
-
提供一些代码,您尝试在其中进行一些多线程处理。从不同的线程使用 std::cout 是个坏主意。
-
@fiscblog 那么如果处理共享资源(在这种情况下为文本文件),不同的线程如何通信和传递状态信息。我对多线程一无所知
标签: c++ multithreading qt console