主要内容

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

send

R2026b

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

描述

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

示例

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

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

示例

示例

全部折叠

创建一个 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® 中计算要求高的任务。使用 send 在 parfor 循环的每次迭代中发送一些虚拟数据。当队列接收到数据后,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 中推出