主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

afterEach

定义一个函数,当数据队列接收到新数据时调用

说明

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 接收到新数据时调用的函数列表中,指定为函数句柄。

所有回调函数必须接受 data 作为单个参量。

afterEach(queue,@foo) 期望函数句柄 @foo 为以下形式的函数

function foo(data)
end 
当调用 send(queue,someData) 时,数据队列将序列化 someData 并将其发送回客户端。在客户端,数据队列对 someData 进行反序列化并将其作为输入传递给 foo(data)

示例: listener = afterEach(queue,funtocall)

输出参量

全部折叠

afterEach 创建的侦听程序对象,作为 event.listener 对象的句柄返回。

扩展功能

全部展开

版本历史记录

在 R2017a 中推出