poll

Получите данные от PollableDataQueue

    Описание

    data = poll(q) получает один элемент данных из PollableDataQueue объект q. Отправьте данные из фонового использования send.

    • Если никакие данные не находятся в очереди, poll возвращается.

    • Если данные находятся в очереди, poll возвращает самый старый элемент данных в очереди.

    пример

    data = poll(q,timeout) ожидает timeout секунды, чтобы получить элемент данных из PollableDataQueue объект q.

    • Если данные находятся в очереди, poll возвращает самый старый элемент данных в очереди.

    • Если никакие данные не находятся в очереди, дожидается к MATLAB® для timeout секунды. Если данные получены в очереди перед timeout секунды протекают, poll возвращает тот элемент. Если никакие данные не получены в очереди перед timeout секунды протекают, poll возвращается.

    [data,tf] = poll(___,timeout) попытки получить данные от очереди и возвращают флаг tf. Если poll смог возвратить данные, tf true. В противном случае, tf false.

    Можно использовать этот синтаксис с любой из комбинаций входных аргументов в предыдущих синтаксисах. Например, [data,tf] = poll(q,5) попытки получить данные от очереди q в течение пяти секунд.

    Примеры

    свернуть все

    В этом примере показано, как вручную получить данные в вашем текущем сеансе работы с MATLAB, который вы отправляете от фона.

    Создайте PollableDataQueue объект.

    q = parallel.pool.PollableDataQueue;

    Функция помощника magicWithSend заданный в конце этого примера отправляет сумму магического квадрата к DataQueue или PollableDataQueue объект, затем возвращает тот магический квадрат.

    Используйте parfeval и backgroundPool запускать функциональный magicWithSend в фоновом режиме.

    f = parfeval(backgroundPool,@magicWithSend,1,q,3);

    Чтобы получить выход из фона, используйте fetchOutputs. MATLAB возвращает выходной параметр однажды выполнение magicWithSend завершено.

    fetchOutputs(f)
    ans = 3×3
    
         8     1     6
         3     5     7
         4     9     2
    
    

    Используйте poll функция, чтобы собрать данные от очереди.

    poll(q)
    ans = 45
    

    Задайте функцию помощника

    Задайте функцию помощника magicWithSend. Функция создает магический квадрат, затем отправляет сумму магического квадрата к DataQueue или PollableDataQueue объект. После того, как сумма отправляется, функция возвращает магический квадрат.

    function X = magicWithSend(q,n)
        X = magic(n);
        s = sum(X,'all');
        send(q,s);
    end

    Входные параметры

    свернуть все

    Очередь в виде parallel.pool.PollableDataQueue объект.

    Секунды, чтобы ожидать в виде действительного числового скаляра.

    Пример: timeout = 5;

    Пример: timeout = single(3.14);

    Выходные аргументы

    свернуть все

    Данные, отправленные очереди в виде скаляра, вектора, матрицы или многомерного массива.

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | table | cell | function_handle | categorical | datetime | duration | calendarDuration

    Отметьте, чтобы задать, были ли данные возвращены, возвращены как true или false.

    Введенный в R2017a