QtConcurrent::run()多线程的同步、异步 QFutureSynchronizer

您所在的位置:网站首页 qtconcurrent::run参数 QtConcurrent::run()多线程的同步、异步 QFutureSynchronizer

QtConcurrent::run()多线程的同步、异步 QFutureSynchronizer

2024-07-10 01:18| 来源: 网络整理| 查看: 265

Qt 提供了 QtConcurrent 模块,处理一些常见的并行计算,最大的特点就是无需再使用互斥锁这种很低级的操作,全都封装好了。除此以外,QFuture、QFutureWatcher、QFutureSynchronizer 类提供了一些辅助性的操作;简单实现了子线程同步、异步操作;

QtConcurrent::run() 需注意 默认扔进了全局线程池,即 QThreadPool::globalInstance()传参数的时候,都会复制一份副本。即使参数是引用,在函数中修改数据也不会对源对象产生任何影响。QFuture::result() 与 QFuture::waitForFinished()函数都会阻塞,直到结果可用才继续之后的代码。QtConcurrent::run()返回的QFuture不支持取消、暂停和进度报告。返回的QFuture只能用于查询运行/完成状态和函数的返回值。

 可以执行无参、含参、有返回值函数,以及lambda表达式

函数原型:

QFuture QtConcurrent::run(Function function, ...) QFuture QtConcurrent::run(QThreadPool *pool, Function function, ...)

默认全局线程池。

【QFuture】同步

QFuture::result()

样例:

int add(int &num) { return ++num; } QFuture future = QtConcurrent::run(add, 1); future.waitForFinished(); qDebug()


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3