exponenta event banner

послать

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

Описание

пример

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

пример

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

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

Примеры

свернуть все

Построить DataQueueи звоните afterEach.

q = parallel.pool.DataQueue;
afterEach(q, @disp);
Начать parfor-loop и отправьте сообщение. Ожидающее сообщение передается в afterEach функция, в этом примере @disp.

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

     2

     3

Дополнительные сведения о прослушивании данных с помощью DataQueue, см. afterEach.

Построить PollableDataQueue.

p = parallel.pool.PollableDataQueue;
Начать parfor-loop и отправить сообщение, например данные со значением 1.
parfor i = 1
    send(p, i); 
end
Опрос за результат.

poll(p)
     1

Дополнительные сведения о получении данных с помощью PollableDataQueue, см. poll.

В этом примере показана функция, которая создает parfor стойка ожидания. Создать 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);

Очередь загрязняющих данных, указанная как parallel.pool.PollableDataQueue объект.

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

Представлен в R2017a