c++ - Qt 使用暂停/停止功能将任务动态添加到线程池队列
问题描述
语境
我有一个长时间运行的进程返回结果。这个结果可能需要进一步处理。也可以同时准备好多个结果。这些需要进一步处理的结果中的每一个也可能需要一段时间。
我需要获取这些结果中的每一个,将每个结果放入一个排序队列并处理每个结果,并能够启动/停止此过程。
问题:
目前,我仅限于使用带有QFutureWatcher的QFuture并使用QtConcurrent::mapped()或QtConcurrent::run()函数(后者不支持直接暂停/停止功能,请参阅下面的注释) .
上面提到的方法的问题是它需要预先知道所有结果,但是为了减少整体处理时间,我想处理每个结果。
如何有效地处理创建带有任务队列的线程池?
解决方案
推荐阅读
- javascript - 在 $_GET 查询 url 中使用 '+' 而不是 %2C'
- html - 如何找到css的图像路径
- php - 如何在 PHP 中对 CSV 文件进行排序而不将整个文件加载到内存中?
- regex - 正则表达式、反向引用和交替
- python - 32 位 Python 脚本调用在 64 位 virtualenv 中运行的多处理
- java - 交换链表算法的相邻元素
- ios - 当引脚关闭时,MKMapView 不会去集群
- c# - 多输入数据验证
- java - 本地主机不能在不同的计算机上工作,但在同一个网络上(Java 套接字)
- c++ - 使用另一个指针对 `unique_ptr` 拥有的对象调用`delete`