Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

send

データ キューを使用したクライアントからワーカーへのデータの送信

説明

send(queue, data) は、queue で指定された parallel.pool.DataQueue に値 data を持つメッセージまたはデータを送信します。afterEach で指定された関数に個々の保留中のメッセージを渡すには、afterEach を呼び出します。

send(pollablequeue, data) は、pollablequeue で指定された parallel.pool.PollableDataQueue に値 data を持つメッセージまたはデータを送信します。poll(pollablequeue) を使用して結果を取得し、回答として data を返します。

さまざまなワーカーからのメッセージやデータを転送し取得するには、ポーリング可能なデータ キューを使って、関数 send および関数 poll を共に使用します。

すべて折りたたむ

DataQueue を作成し、afterEach を呼び出します。

q = parallel.pool.DataQueue;
afterEach(q, @disp);
parfor ループを開始し、メッセージを送信します。保留中のメッセージ (この例では @disp) が関数 afterEach に渡されます。

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 を使用して、キューがデータを受信するたびに実行される関数を指定します。この例では、ウェイト バーを更新するサブ関数を呼び出します。

計算負荷の高いタスクを MATLAB® で実行するために parfor ループを作成します。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);

ポーリング可能なデータ キュー。parallel.pool.PollableDataQueue オブジェクトとして指定します。

例: p = parallel.pool.PollableDataQueue;

バージョン履歴

R2017a で導入