afterEach

Запустите функцию после того, как данные будут получены на DataQueue

Синтаксис

Описание

пример

L = afterEach(q,fcn) возвращает прослушиватель, который запускает функциональный fcn после того, как каждый элемент данных получен на DataQueue объект q.

Можно только запуститься afterEach в MATLAB® сеанс, где вы создаете q.

Если вы используете afterEach добавить новый прослушиватель, прослушиватель L все еще запускает функциональный fcn. Остановить функциональный fcn от выполнения используйте delete удалить прослушиватель L.

После того, как вы вызываете afterEach, любые данные в очереди сразу обрабатываются прослушивателем.

Примеры

свернуть все

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

Создайте DataQueue объект. После того, как каждый элемент данных получен на DataQueue в вашем текущем сеансе работы с MATLAB автоматически отобразите тот элемент с помощью disp функция.

q = parallel.pool.DataQueue;
afterEach(q,@disp);

Функция помощника 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

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

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

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

Использование afterEach создать прослушиватель для DataQueue объект, затем удалите прослушиватель.

Создайте DataQueue возразите в своем текущем сеансе работы с MATLAB. Использование afterEach отобразить каждый элемент данных что DataQueue объект получает.

q = parallel.pool.DataQueue;
L = afterEach(q,@disp);

Отправьте некоторые данные в DataQueue объект. Когда данные получены, прослушиватель отображает данные.

send(q,magic(3))
     8     1     6
     3     5     7
     4     9     2

Удалите прослушиватель, затем отправьте еще некоторые данные в DataQueue объект. Когда вы удаляете прослушиватель, он прекращает отображать данные, которые вы отправляете в DataQueue объект.

delete(L)
send(q,magic(3))

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

свернуть все

Очередь данных в виде parallel.pool.DataQueue объект.

Функция обратного вызова в виде указателя на функцию. Прослушиватель L запускает функцию обратного вызова после того, как каждый элемент данных будет получен на DataQueue объект q.

Функция обратного вызова должна принять data как отдельный аргумент.

Пример: @disp

Пример: @(~)beep

Пример: @(~)disp('Data received.')

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

свернуть все

Прослушиватель, возвращенный как event.listener объект.

Прослушиватель запускает функциональный fcn после каждого элемента данных, отправленных в DataQueue объект q получен в текущем сеансе работы с MATLAB. Остановить функцию fcn выполнение, удалите прослушиватель.

Введенный в R2017a