send

Отправьте данные от рабочего клиенту, использующему очередь данных

Описание

пример

send(queue, data) отправляет сообщение или данные со значением data к parallel.pool.DataQueue заданный queue. Вызовите afterEach передать каждое из незаконченных сообщений к функции, заданной afterEach.

пример

send(pollablequeue, data) отправляет сообщение или данные со значением data к parallel.pool.PollableDataQueue заданный pollablequeue. Получите результат с помощью poll(pollablequeue), и возвратите data как ответ.

Используйте send и poll функции вместе с помощью pollable очереди данных, чтобы передать и получить сообщения или данные от различных рабочих.

Примеры

свернуть все

Создайте 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 waitbar. Создайте DataQueue, и используйте afterEach чтобы задать функцию, чтобы выполниться каждый раз, очередь получает данные. Этот пример вызывает подфункцию, которая обновляет панель ожидания.

Создайте parfor- цикл, чтобы выполнить в вычислительном отношении требовательную задачу в MATLAB®. Используйте send отправить некоторые фиктивные данные по каждой итерации parfor- цикл. Когда очередь получает данные, afterEach вызовы nUpdateWaitbar в клиенте MATLAB, и можно наблюдать прогресс панели ожидания.

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

Входные параметры

свернуть все

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

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

Сообщение или данные от рабочих очереди данных, заданной как любой тип данных, который может быть сериализирован.

Пример: send(queue, data);

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

Пример: p = parallel.pool.PollableDataQueue;

Введенный в R2017a