主要内容

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

send

使用数据队列在客户端和工作单元之间发送数据

说明

send(queue,data) 将值为 data 的消息或数据发送到 DataQueue 指定的 queue。调用 afterEach 将每个待处理的消息传递给 afterEach 指定的函数。

示例

send(pollablequeue,data) 将值为 data 的消息或数据发送到 PollableDataQueue 指定的 pollablequeue。使用 poll 检索结果,并返回 data 作为答案。

sendpoll 函数与可轮询的数据队列一起使用,在客户端和工作单元之间传输和检索消息或数据。

示例

示例

全部折叠

创建一个 DataQueue,并使用 afterEach 设置一个回调函数,在客户端显示队列中的数据。

q = parallel.pool.DataQueue;
afterEach(q,@disp);
运行一个 parfor 循环,并将消息发送到队列。当消息到达客户端时,它会被传递到 afterEach 回调函数 @disp

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

     2

     3

有关使用 DataQueue 监听数据的更多详细信息,请参阅 afterEach

创建一个 PollableDataQueue 对象。

p = parallel.pool.PollableDataQueue;
使用 parfeval 发送消息,例如值为 1 的数据。
f = parfeval(@send,0,p,1);
wait(f);
轮询结果。

poll(p)
 ans = 1

有关使用 PollableDataQueue 检索数据的更多详细信息,请参阅 poll

此示例显示创建 parfor 等待栏的函数。创建一个 DataQueue,并使用 afterEach 指定队列每次接收数据时执行的函数。此示例调用更新等待栏的子函数。

创建一个 parfor 循环来执行 MATLAB® 中计算要求高的任务。使用 sendparfor 循环的每次迭代中发送一些虚拟数据。当队列接收到数据后,afterEach 在客户端 MATLAB 中调用 nUpdateWaitbar,可以观察到等待条进度。

function a = parforWaitbar

D = parallel.pool.DataQueue;
h = waitbar(0,'Please wait ...');
afterEach(D,@nUpdateWaitbar);

N = 200;
p = 1;

parfor i = 1:N
    a(i) = max(abs(eig(rand(400))));
    send(D,i);
end

    function nUpdateWaitbar(~)
        waitbar(p/N,h);
        p = p + 1;
    end
end

Status bar indicating roughly one third completion.

输入参数

全部折叠

数据队列,指定为 parallel.pool.DataQueue 对象。

示例: q = parallel.pool.DataQueue;

发送到数据队列的消息或数据,指定为任何可以序列化的数据类型。

示例: send(queue,data);

可轮询数据队列,指定为 PollableDataQueue 对象。

如果您使用 close 函数关闭一个 PollableDataQueue,您就无法再向队列发送数据。任何尝试将数据发送到队列都会导致错误。 (自 R2025a 起)

示例: p = parallel.pool.PollableDataQueue;

扩展功能

全部展开

版本历史记录

在 R2017a 中推出