メインコンテンツ

send

データ キューを使用したクライアントとワーカーの間でのデータの送信

説明

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

send(pollablequeue,data) は、pollablequeue で指定された PollableDataQueue に値 data をもつメッセージまたはデータを送信します。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 を使用して、キューがデータを受信するたびに実行される関数を指定します。この例では、ウェイト バーを更新するサブ関数を呼び出します。

計算負荷の高いタスクを 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);

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

close 関数を使用して PollableDataQueue を閉じると、キューへのデータの送信はできなくなります。キューにデータを送信しようとするとエラーになります。 (R2025a 以降)

例: p = parallel.pool.PollableDataQueue;

拡張機能

すべて展開する

バージョン履歴

R2017a で導入