Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

afterEach

DataQueue에서 새 데이터를 받을 때 호출할 함수를 정의합니다.

설명

예제

listener = afterEach(queue, funtocall)queue가 새로운 데이터를 수신할 때마다 함수 funtocall이 실행되도록 지정합니다. afterEach를 호출할 때마다 대기열에 새로운 리스너가 생성되기 때문에 호출할 서로 다른 여러 함수를 지정할 수 있습니다. 다른 함수를 지정하려면 afterEach를 다시 호출하십시오. queue가 있는 함수의 등록을 제거하려면 반환된 listener 객체를 삭제하십시오.

데이터 대기열을 만든 동일한 프로세스에서 afterEach를 호출해야 합니다. 그렇게 하지 않으면 오류가 발생합니다. afterEach를 호출한 후 대기열의 모든 현재 데이터는 제공된 함수에 즉시 디스패치됩니다.

예제

모두 축소

afterEach를 호출한 경우 대기열에 디스패치되기를 기다리는 항목이 있으면 이들 항목이 즉시 afterEach 함수에 디스패치됩니다. send에서 afterEach에 의해 지정된 함수 핸들이 호출되도록 하려면 데이터를 대기열로 전송하기 전에 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에 개발됨