问题标签 [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
我成功地将一些工作与 QtConcurrent::run() 中的非静态成员函数并行化。我现在正在尝试使用静态成员函数实现并行工作。我有一个 Random 类,我想在一个精确的实例上调用 rand(double,double) 静态函数:它是一个随机数生成器,我想在一个新播种的生成器上运行调用 runif 的线程。我在这里尝试过(solveParallel 类是一个简单的类,其中我有一个 runRandom() 和 resultRandom() 函数,分别调用 QtConcurent::run 和 Qfuture::result()):
并且编译错误是“无法推断模板参数,因为函数参数不明确”::任何线索?
谢谢并恭祝安康。
qt - 使用 QtConcurrent 映射时序列参数出错
我正在尝试使用 QtConcurrent::map 来运行此功能
在这个容器/序列上(在主窗口标题中声明并在主窗口构造函数中初始化)
这是我要运行的代码
这是我得到的错误:
我需要为“imageList”中的每个元素运行“createQImage”函数,它可以达到数千个。我认为问题出在 map 函数的第一个参数上。从我读过的内容来看,这可能与兼容性有关。网上没有太多我能够与之相关的示例代码。我是 Qt 新手,不是最有经验的程序员,但我希望能得到一些帮助和反馈。
或者,有没有更好的方法使用 QtConcurrent 来做到这一点?
提前致谢!
c++ - QtConcurrent - 对线程中相同函数的分组调用
我想知道在线程中多次调用相同函数生成随机点(随机坐标)的最佳实践。实际上,我已经为这个函数实现了并行调用,比如 randomPoint()。现在,我想尝试是否改进不是为每个调用创建一个线程,而是准确地以可用线程数运行计算。我计算
对我来说,有 8 个线程可用。我有 2000 个类似的计算要执行。因此,我想运行 8 个线程,每个线程进行 2000/8 次计算。
但是我不知道实现 QtConcurrent 调用的最佳方法是什么。现在,我写
然后是 futurRand_.result(); 我调整了方法 randomPoint(),最初返回一个单点 (double*),以便它可以返回一个双**,一组 2000/8 个点。
但我看到了 QConcurent::map() 的替代方案。有没有更有效的方法?与 QThread?
欢迎您在 Qt 中使用多线程!
问候。
- 编辑:为了更准确:地图有签名
或 altinatively 将迭代器作为其参数之一。但是,我在这里调用了一个每次都在同一个实例this上调用的函数。如何进行?还有哪些方便的方式?
multithreading - QProcess, QEventLoop - 可用于并行处理
我想知道是否可以使用 QEventLoop (QProcess?) 来并行化对 Qt 同一函数的多个调用。QtConcurrent 或 QThread 究竟有什么区别?更准确地说,什么是流程和事件循环?我读到 QCoreApplication 必须在 main() 方法中尽早 exec() ,所以我想知道为什么它与主线程不同。
您能否指出对 Qt 进程和线程的一些有效参考?我是通过官方文档来的,这些事情仍然不清楚。
谢谢并恭祝安康。
multithreading - QRunnable - 如何使用它,示例
可以指出使用 QRunnable 作为 QtConcurrent 的替代方案的一些代码:我在 Qtdoc 中找不到任何 QRunnable 示例。
你有没有为同一个应用程序尝试过 QRunnable 和 QtConcurrent,你能评论一下比较的性能吗?
c++ - 非中断 I/O 的最佳实践
我有一个正在使用的小应用程序,它需要生成一个非常详细的日志。我已经实现了一个简单的单例 Logger 类,它看起来像这样
现在我对 Qt 和 C++ 有点陌生,也许这都是错误的,所以对我来说放轻松:)。现在我得到了大约 22% 的性能下降,与不记录相比,使用这种方法是我能够管理的最好的方法。我想性能影响来自创建 QtConcurrent 线程。
我想我的问题是,这将是最好的方法还是有更好的方法来实现它,这将使性能更接近根本不记录。我知道无论应用程序的日志记录会变慢,但我正在尝试尽可能减少这种情况。
multithreading - 带有成员函数的 QtConcurrent::map() = 无法编译
我的项目是创建一个小程序来演示搜索引擎的工作:为任意查询建立索引和返回结果。我已经完成了索引器部分的工作,现在我想通过一次索引多个文件来改进它。MainWindow 类在这里:
这是add
(add
需要访问fileList
以避免再次索引相同的文件,因此它不能是静态方法)的实现:
方法的实现index
是接收一个文件列表并调用add
每个文件名:
编译这些代码时收到的错误是:
我不太熟悉 QtConcurrent 的工作原理,文档也没有提供太多关于它的细节。我真的希望这里有人可以提供帮助。提前致谢。
multithreading - QtConcurrent 运行的线程 id
我正在用 QT 做多线程程序。
我使用此代码来尝试它是否按我预期的那样工作。
并且 thread_process1 和 2 都只是一行,即
但是,它们都显示线程 ID:“ffffffffb6085b40”
我做错了吗??QFutureWatcher 似乎没有帮助。
c++ - std::bind、this 和 QtConcurrent
我正在尝试使用std::bind
绑定this
到中使用的方法QtConcurrent::blockingMapped
标题:
}
资源:
blockingMapped
所以我在这里做的是在每个ConfigNode
in上同时运行 step currentConfigs
。我使用std::bind
绑定this
到,step
所以它只需要一个参数,如blockingMapped
.
我越来越
和note: 2 arguments expected, 1 provided
我哪里做错了?
编辑
更正的工作版本(供将来“参考”):
标题:
资源:
multithreading - QtConcurrent 线程很慢!!我究竟做错了什么?
为什么我qtconcurrent::run()
的调用和通过对象调用成员函数一样慢?
(例如:QtConcurrent::run(&db, &DBConnect::loadPhoneNumbers)
和调用一样慢db.loadPhoneNumbers()
)
阅读下面的进一步解释
我一直在尝试通过创建一个线程QtConcurrent::run
来帮助加快将数据发送到 SQL 数据库表的速度。我正在获取一个 QMap 成员变量并遍历它以将每个键 + 值发送到数据库。
QtConcurrent::run() 调用的成员函数:
调用线程的 main.cpp 部分
我对情况的理解
据我了解,该线程将在与主线程分开的新线程池下运行。我所看到的情况并非如此(请注意,在此之前还有 2 个其他 QtConcurrent::run() 调用用于数据库,在继续数据库调用之前全部完成)
现在我考虑使用 QtConcurrent::map() / mapped() 但无法让它与 QMap 一起正常工作。(找不到任何可以帮助的例子,但除此之外......只是一个仅供参考,以防有人问我为什么不使用一个)
一直在做一些“调试”工作来找出发生了什么,在我的测试中,我使用 QThread::currentThread() 来查找我当前正在从哪个线程进行调用。这就是我程序中的各个线程正在发生的事情。(所有 qtconcurrent::run() 调用都是在 main.cpp 中进行的,仅供参考......不确定这是否有区别)
如上所示,除了第一次qtconcurrent::run()
调用外,其他一切都在主线程上(oO)
问题:
据我了解,我所有的线程(全部qtconcurrent::run
)都应该在他们自己的线程上(只有第一个是)。这是真的还是我错过了什么?
其次,我的 loadPhoneNumebrs() 成员函数线程安全吗?(因为我没有改变我所看到的任何东西)
最大的问题:
为什么我的loadPhoneNumbers()
qtconcurrent::run
调用和我刚刚调用成员函数一样慢?(例如:db.loadPhoneNumbers()
与 qtconcurrent::run() 版本一样慢)
任何帮助深表感谢!