exponenta event banner

afterEach

Определение функции для вызова при получении новых данных в DataQueue

Описание

пример

listener = afterEach(queue, funtocall) задает функцию funtocall для выполнения каждый раз queue получает новые данные. Можно указать несколько различных функций для вызова, поскольку каждый вызов afterEach создает новый прослушиватель в очереди. Если требуется указать другую функцию, вызовите afterEach снова. Удаление регистрации функции с помощью queue, удалить возвращенный listener объект.

Вы должны позвонить afterEach в том же процессе, в котором была создана очередь данных, в противном случае возникает ошибка. После звонка afterEachвсе текущие данные в очереди немедленно передаются в предоставленную функцию.

Примеры

свернуть все

При звонке afterEach и есть элементы в очереди, ожидающие отправки, эти элементы немедленно отправляются в afterEach функция. Звонить afterEach перед отправкой данных в очередь, чтобы убедиться, что send, дескриптор функции, указанный afterEach вызывается.

Построить DataQueue и звонить afterEach.

q = parallel.pool.DataQueue;
afterEach(q, @disp);
При последующей отправке сообщений в очередь каждое сообщение передается дескриптору функции, указанному в afterEach немедленно.

parfor i = 1
    send(q, 2); 
end
     2
send(q, 3)
     3

Также можно сначала отправить различные сообщения в очередь. При звонке afterEach, ожидающие сообщения передаются в afterEach функция, в этом примере к дескриптору функции @disp.

q = parallel.pool.DataQueue;
parfor i = 1
    send(q, 2); 
end
send(q, 3)

afterEach(q, @disp);
     2

     3

Построить DataQueue и создайте прослушиватель.

D = parallel.pool.DataQueue;
listener = D.afterEach(@disp);

Отправьте некоторые данные со значением 1.

D.send(1)
     1

Удалите прослушиватель.

delete(listener) 
D.send(1)

Данные не возвращаются, так как вы удалили обратный вызов, удалив прослушиватель.

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

свернуть все

Очередь данных, указанная как parallel.pool.DataQueue объект.

Пример: q = parallel.pool.DataQueue;

Дескриптор функции, указывающий функцию, добавленную в список функций для вызова при получении части новых данных от queue.

Пример: listener = afterEach(queue, funtocall)

Все функции обратного вызова должны принимать data в качестве единственного аргумента.

afterEach(queue, @foo) ожидает дескриптор функции @foo в функцию формы

function foo(data)
end 
Когда send(queue, someData) вызывается для работника, someData сериализован и отправлен обратно клиенту. someData десериализован на клиенте и передан в качестве входных данных foo(data).

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

свернуть все

Объект прослушивателя, созданный afterEach, возвращенный в качестве дескриптора в event.listener объект.

Представлен в R2017a