2017-02-16 8 views
1
void QFutureWatcher::resultReadyAt(int index) 

Этот сигнал испускается, когда наблюдаемое будущее сообщает о готовом результате по индексу. Если будущее сообщает о нескольких результатах, индекс укажет, какой из них он есть. Результаты можно сообщать не по порядку. Чтобы получить результат, звоните future().result(index);Что такое индекс в индексе QFuture :: resultReadyAt (int index)

Если QFutureWatcher может просматривать только один экземпляр QFuture, а экземпляр может возвращать только один результат, для какого индекса используется? Я чувствую, что не понимаю, как правильно использовать эти два.

Я хотел бы поставить в очередь несколько задач, которые возвращают результаты своей задачи. Если у меня есть список задач, я хотел бы связать результат задачи с списком задач.

+0

Я действительно считаю, что этот индекс в основном связан с тем, что 'QFuture' может иметь несколько результатов (отметьте [QFuture :: results()] (http://doc.qt.io/qt-5/qfuture .html # results), например). Поскольку «QFutureWatcher» предназначен для наблюдения за будущим, он также должен иметь доступ к нескольким результатам, которые могут быть сохранены в будущем, особенно потому, что этот тип мониторинга также предоставляет вам сигналы и слоты, если вы хотите распространять эти результаты где-то в другом месте. – rbaleksandar

+0

@rbaleksandar спасибо за ввод. Я не вижу, как результат будет более одного. Единственный способ, по которому я вижу, что результаты заселяются, - это возвращение наблюдаемой функции. Есть ли способ заполнить результаты другим способом? Я ничего не вижу в документации или примерах, показывающих, как этот индекс когда-либо используется или как получается более одного результата. –

ответ

0

Во-первых, обратите внимание, что QFuture не является классом, чьи исходные (не скопированные) экземпляры вы создаете сами: экземпляры предоставлены фабричными методами в параллельной структуре.

Если QFutureWatcher может смотреть только один экземпляр QFuture и экземпляр может возвращать только один результат

Это не правильно: будущие доходы, однако многие результаты асинхронной операции он оборачивает представляет, и QFutureWatcher имеет соответствующие сигналы resultReadyAt и resultsReadyAt, которые показывают эти события асинхронно по мере их возникновения.

Я хотел бы поставить в очередь несколько задач, которые возвращают результаты своей задачи. Если у меня есть список задач, я хотел бы связать результат задачи с списком задач.

QtConcurrent::map и QtConcurrent::mapped то, что вы ищете: они обеспечивают фьючерсы, которые имеют несколько результатов.

 Смежные вопросы

  • Нет связанных вопросов^_^