Main Content

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

send

使用数据队列将数据从工作进程发送到客户端

说明

示例

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

示例

send(pollablequeue, data) 将值为 data 的消息或数据发送到 pollablequeue 指定的 parallel.pool.PollableDataQueue。使用 poll(pollablequeue) 检索结果,并返回 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;
启动一个 parfor 循环,并发送一条消息,例如值为 1 的数据。
parfor i = 1
    send(p, i); 
end
轮询结果。

poll(p)
     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);

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

示例: p = parallel.pool.PollableDataQueue;

扩展功能

版本历史记录

在 R2017a 中推出