QT高级线程API总结(六)QFutureSynchronizer

28
四月
2021

目录

 

1、Header: #include

2、qmake: QT += core

3、详情描述

4、成员函数

4.1 void QFutureSynchronizer::addFuture(const QFuture &future)

4.2 bool QFutureSynchronizer::cancelOnWait() const

4.3 void QFutureSynchronizer::clearFutures()

4.4 QList > QFutureSynchronizer::futures() const

4.5 void QFutureSynchronizer::setCancelOnWait(bool enabled)

4.6 void QFutureSynchronizer::setFuture(const QFuture &future)

4.7 void QFutureSynchronizer::waitForFinished()


1、Header: #include <QFutureSynchronizer>

2、qmake: QT += core

3、详情描述

QFutureSynchronizer类是一个方便的类,它简化了QFuture同步。

QFutureSynchronizer是一个模板类,它简化了一个或多个QFuture对象的同步。future是使用addFuture()或setFuture()函数添加的。函数的作用是:返回一个futures列表。使用clearFutures()从QFutureSynchronizer中删除所有future。

函数waitForFinished()等待所有的future完成。QFutureSynchronizer的析构函数调用waitForFinished(),提供了一种简单的方法来确保所有的future在从函数返回之前都已经完成:

void someFunction()

{

QFutureSynchronizer<void> synchronizer;

..

synchronizer.addFuture(QtConcurrent::run(anotherFunction));

synchronizer.addFuture(QtConcurrent::map(list, mapFunction));

return; // QFutureSynchronizer waits for all futures to finish

}

waitForFinished()的行为可以通过setCancelOnWait()函数来改变。调用setCancelOnWait(true)将导致waitForFinished()在等待它们完成之前取消所有的futures。可以使用cancelOnWait()函数查询“等待中取消”特性的状态。

请参见QFuture、QFutureWatcher和Qt Concurrent。

4、成员函数

4.1 void QFutureSynchronizer::addFuture(const QFuture<T> &future)

将future添加到管理的future列表中

4.2 bool QFutureSynchronizer::cancelOnWait() const

如果取消等待特性被启用,返回true;否则返回false。如果启用了取消等待功能,waitForFinished()函数将在等待它们完成之前取消所有的future。

4.3 void QFutureSynchronizer::clearFutures()

从这个QFutureSynchronizer中删除所有托管的future。

4.4 QList<QFuture<T> > QFutureSynchronizer::futures() const

返回所有托管future的列表。

4.5 void QFutureSynchronizer::setCancelOnWait(bool enabled)

基于enabled参数启用或禁用取消等待特性。如果enabled为true, waitForFinished()函数将在等待它们完成之前取消所有的futures。

4.6 void QFutureSynchronizer::setFuture(const QFuture<T> &future)

将future设置为由这个QFutureSynchronizer管理的唯一future。这是一个方便的函数,它调用waitForFinished(),然后调用clearFutures(),最后将future传递给addFuture()。

4.7 void QFutureSynchronizer::waitForFinished()

等待所有的未来结束。如果cancelOnWait()返回true,则每个future在等待它们完成之前被取消。

 

 

 

 

 

TAG

网友评论

共有访客发表了评论
请登录后再发布评论,和谐社会,请文明发言,谢谢合作! 立即登录 注册会员