fetchNext

Получите затем доступный непрочитанный FevalFuture выходные параметры

Синтаксис

[idx,B1,B2,...,Bn] = fetchNext(F)
[idx,B1,B2,...,Bn] = fetchNext(F,TIMEOUT)

Описание

[idx,B1,B2,...,Bn] = fetchNext(F) ожидает непрочитанного FevalFuture в массиве фьючерсов F, чтобы закончиться, и затем возвращает линейный индекс того будущего в массиве F как idx, наряду с результатами будущего в B1,B2,...,Bn. Перед этим вызовом свойством 'Read' конкретного будущего является false; позже это - true.

[idx,B1,B2,...,Bn] = fetchNext(F,TIMEOUT) не ожидает больше, чем секунды TIMEOUT для результата стать доступным. Если тайм-аут истекает, прежде чем любой результат станет доступным, все выходные аргументы пусты.

Если нет никаких фьючерсов в F, свойством 'Read' которого является false, то об ошибке сообщают. Можно проверять, существуют ли какие-либо непрочитанные фьючерсы с помощью anyUnread = ~all([F.Read]).

Если элемент F, который стал законченным, столкнулся с ошибкой во время выполнения, та ошибка будет выдана fetchNext. Однако свойство 'Read' того будущего является набором true, так, чтобы могли продолжить любые последующие вызовы fetchNext.

Примеры

Запросите несколько функциональных оценок и обновите индикатор выполнения при ожидании завершения.

N = 100;
for idx = N:-1:1
    % Compute the rank of N magic squares
    F(idx) = parfeval(@rank,1,magic(idx));
end
% Build a waitbar to track progress
h = waitbar(0,'Waiting for FevalFutures to complete...');
results = zeros(1,N);
for idx = 1:N
    [completedIdx,thisResult] = fetchNext(F);
    % store the result
    results(completedIdx) = thisResult;
    % update waitbar
    waitbar(idx/N,h,sprintf('Latest result: %d',thisResult));
end
delete(h)

Советы

Функция fetchNext возвращает линейный индекс будущего от его массива. Если вместо этого, вам нужны нижние значения многомерного массива, можно использовать функцию ind2sub, чтобы преобразовать значения.

Смотрите также

| | | |

Введенный в R2013b