Main Content

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

afterEach

DataQueue で新規データを受信したときに呼び出す関数の定義

説明

listener = afterEach(queue, funtocall) は、queue が新規データを受信するたびに実行する関数 funtocall を指定します。afterEach のそれぞれの呼び出しでキューに新規リスナーが作成されるため、複数の異なる関数を呼び出すように指定することができます。別の関数を指定するには、afterEach をもう一度呼び出します。関数の queue への登録を削除するには、返された listener オブジェクトを削除します。

データ キューを作成したときと同じプロセスで afterEach を呼び出さなければなりません。そうしないと、エラーが発生します。afterEach を呼び出した後、キュー内の現在のデータがすべて、指定された関数にただちにディスパッチされます。

すべて折りたたむ

afterEach を呼び出したときに、キューにディスパッチ待ちのアイテムがある場合、これらのアイテムはただちに関数 afterEach にディスパッチされます。afterEach で指定された関数ハンドルが send で必ず呼び出されるように、データをキューに送信する前に afterEach を呼び出します。

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

q = parallel.pool.DataQueue;
afterEach(q, @disp);

その後、キューにメッセージを送信すると、afterEach で指定された関数ハンドルに各メッセージがただちに渡されます。

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

最初に各種のメッセージをキューに送信することもできます。afterEach を呼び出すと、保留中のメッセージが関数 afterEach (この例では関数ハンドル @disp) に渡されます。

q = parallel.pool.DataQueue;
parfor i = 1
    send(q, 2); 
end
send(q, 3)

afterEach(q, @disp);
     2

     3

DataQueue を作成し、リスナーを作成します。

D = parallel.pool.DataQueue;
listener = D.afterEach(@disp);

値 1 を持つ何らかのデータを送信します。

D.send(1)
     1

リスナーを削除します。

delete(listener) 
D.send(1)

リスナーを削除したことによりコールバックが削除されたので、データは返されません。

入力引数

すべて折りたたむ

データ キュー。parallel.pool.DataQueue オブジェクトとして指定します。

例: q = parallel.pool.DataQueue;

関数ハンドル。queue から新規データの一部を受信したときに呼び出す関数のリストに対し、追加する関数を指定します。

例: listener = afterEach(queue, funtocall)

すべてのコールバック関数は、data を単一の引数として受け入れなければなりません。

afterEach(queue, @foo) には、次の形式の関数の関数ハンドル @foo が必要です。

function foo(data)
end 
ワーカー上で send(queue, someData) が呼び出されると、someData がシリアル化されてクライアントに送り返されます。someData はクライアントで逆シリアル化され、入力として foo(data) に渡されます。

出力引数

すべて折りたたむ

afterEach が作成するリスナー オブジェクト。event.listener オブジェクトのハンドルとして返されます。

バージョン履歴

R2017a で導入