问题标签 [qtconcurrent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何使用 QtConcurrent 对 QByteArray 进行 qCompress?
我想编写一个小程序,使用 QByteArray 的 qCompress 压缩目录中的所有文件。
但是我想通过使用 QtConcurrent 在多线程环境中运行压缩。但我有一些问题。
这是我的代码:
问题是编译器给我一个错误
第一:没有匹配的函数调用过滤(&QByteArray,)。
第二:请求从 QList 转换为非标量类型 QByteArray。
所以,我的问题是,有可能做我想做的事吗?
提前致谢
qt - QtConcurrent::run => QWaitCondition: 在线程仍在等待时被销毁
在一个循环中启动N个线程并在另一个循环中等待每个线程后,我收到消息“QWaitCondition: Destroyed while threads are still waiting” 。
这是代码:
我只是无法弄清楚为什么会这样,而我正在等待每个线程。
c++ - QtConcurrent 与多线程的 QThread 的多线程性能
假设您的应用程序需要在多个线程中运行一个函数,其数量多于 CPU 内核/线程的数量。一种方法是使用QtConcurrent
和设置最大线程数:
另一种方法是拥有多个对象并将它们移动到不同的线程,使用moveToThread
:
由于线程数多于 CPU 内核数,因此在运行时应在不同内核之间切换线程。
问题是这两种方法是否有不同的表现?即 a 的切换QThread
与使用 运行的不同QtConcurrent::run
吗?
c++ - 如何使用 QtConcurrent::run 以指针作为参数调用非类成员函数?
我想调用一个递归非类成员函数,用于使用 Qt 4.8 for Embedded Linux 擦除给定文件夹及其所有文件:
(忘记try-catch;它们是用于“调试”的)
如您所见,该函数接收一个指向类 QProgressDialog 类的指针和一个指向整数的指针作为参数。类 QProgressDialog 类使用删除操作的进度更新界面,整数存储实际删除的文件数。
我遇到的问题是,当我使用 QtConcurrent::run 调用此函数时,我经常遇到分段错误、对齐陷阱等:
当我直接调用函数时不会发生同样的情况,所以我知道这可能不是函数或 ProgressDialog 类的问题。而且我无法访问 GDB 来更仔细地调试它(感谢那个带有 Python 东西的 GDB)。
所以我的问题本质上是:我做错了什么?我应该如何做到这一点而不会出错?
额外信息:
- 至于现在 ProgressDialog 和 integer 在 .cpp 文件中都是全局的,但它们前一段时间是本地的,问题已经存在。
- 有时,仅在 main() 末尾的“return”函数中关闭应用程序时才会出现 seg 错误。但是,就目前而言,甚至在完成清除操作之前就出现了问题。
qt - Problems developing QFutureWatcher to improve image loading times
I am trying to load multiple images using multithreading through QFutureWatcher class but I am not being able to do it properly. My code read the url of the images and save them on a QVector. Then I Pass these QStrings to a function that load, resize and save the images on a QMap object. The code is:
The error that I am receiving when I try to compile said that the list of arguments in the call to the function "addImageThumnailToMap" is not found but I think that it is not neccesary specify that on the "QtConcurrent::map()" function. Thanks for your help
qt - 将 QFuture 列表设置为 QFutureWatcher
是否可以添加QFuture
多个QFutureWatcher
?我想添加多个功能QFutureWatcher
并在所有线程完成时收到通知。
QFutureSynchronizer
没有帮助我,因为它没有完成的信号
multithreading - 等到所有 Qt 并发线程完成
我正在运行 5 个线程,如下所示
我想在这里等到所有线程都完成。
所以我想使用像这样的东西 QEventLoop::exec();
但是一旦所有结果都可用,如何退出这个 exec() 呢?
编辑:-我做了这样的事情,对我有用
注意: 当我知道所有线程都已完成时,您可能会问为什么我不能在 FinishedThread() 插槽中做这些事情,项目我正在努力强迫我仅在所有线程完成时才在构造函数中做这些事情(这可能不是你的情况,那么你可以在 FinishedThread() 插槽中做事)。
c++ - 如果没有显示 QProgressDialog,QtConcurrent::map 会崩溃
考虑一下SLOT
,在我的主线程中,由一个按钮触发,该按钮QTreeWidgetItem
从QTreeWidget
. 它使用QtConcurrent::map()
调用来执行一个长任务。watcher
连接到 a以显示QProgressDialog
进度。
我还在 UI(包含所有以前的小部件)中添加了QProgressBar
具有相同 SIGNALS/SLOTS 的 a。保持与之前一样的代码按预期工作:显示进度对话框,并且进度条完全按照对话框更新。相反,如果我评论
或者我以某种方式隐藏对话框,进程崩溃(并非总是如此,有时它运行良好)。看着qDebug() << item->text(4);
它崩溃,输出显示随机混合的文本(它们应该是文件名)。QProgressDialog
此外,即使计算没有崩溃,进度条也不会在未显示时自行更新。
注意:我之前在另一个函数中遇到过类似的问题,我通过设置解决了它
仅在 Windows 上,OSX 没问题。
那么,QProgressDialog
使所有事情都正确的背后的诀窍是什么?有没有办法我可以使用QProgressBar
而不是QProgressDialog
?
笔记
这是该过程顺利完成时的输出:
python - PySide/PyQt 中的 QtConcurrent
我试图弄清楚子类化 QtConcurrent并在其中编写一个运行方法是否可以工作:
还是完全没用?
multithreading - 使用 QFutureWatcher 时函数未使用 QtConcurrent::run() 运行
QtConcurrent::run()
我想在(Qt for Embedded Linux 4.8)调用的并行线程中调用一个函数来从系统中删除文件和文件夹。仅使用QFuture<bool>
withQFuture::waitForFinished()
来获取结果(我需要在操作后立即运行一些代码),我能够使系统工作。
但是我想在QProgressBar
派生类中显示操作的正在进行的结果,setValue(int)
并从删除函数内部通过信号和槽机制调用它,而我用上述方法得到的是一个冻结的主线程,而操作还没有完成,这是不可接受的。
所以我想使用QFutureWatcher<bool>
它的finished()
信号并将其连接到另一个插槽,其中包含要在删除操作完成后运行的剩余代码。
我面临的问题是,当我这样做时,删除功能根本不是由QtConcurrent::run()
!我通过打印到终端的消息检查了这一点。发生的一切都是在没有执行任何删除文件功能的情况下QFutureWatcher
调用其finished()
信号(如果我使用,也会发生这种情况QFutureWatcher::waitForFinished()
)。
这是Qt的一些错误吗?
关于代码,它与 Qt Assistant 中的完全一样:全局创建 QFuture 和 QFutureWatcher,将 finished() 信号与 slot、callQtConcurrent::run()
和setFuture()
未来连接。没什么特别的。
任何帮助表示赞赏。
编辑
按照 Kuba 的要求,这里是代码的相关部分:
这是使用 QFuture 和 QFutureWatcher 的所有代码。removeFiles
如下(不要忘记它在没有 QFutureWatcher 的情况下运行良好):