비동기 프로시저 호출

Asynchronous procedure call

비동기 프로시저 호출은 컴퓨터의 작업 단위입니다.일반적으로 프로그램은 일부 스레드에서 일련의 동기 프로시저 호출을 실행함으로써 작동합니다.그러나 일부 데이터가 준비되지 않은 경우(예를 들어 프로그램이 사용자의 응답을 기다리는 경우), 스레드가 프로시저 스택에 상당한 양의 메모리를 할당하고 이 메모리는 사용되지 않으므로 스레드를 대기 상태로 유지하는 것은 비현실적입니다.따라서 이러한 프로시저 호출은 입력 데이터용 메모리 양이 적은 오브젝트로 형성되며, 이 오브젝트는 사용자 입력을 받는 서비스에 전달됩니다.사용자의 응답을 수신하면 서비스는 해당 응답을 객체에 넣고 해당 객체를 실행 서비스로 전달합니다.실행 서비스는 하나 이상의 전용 작업자 스레드와 작업 대기열로 구성됩니다.각 워커 스레드는 루프 태스크 큐를 읽고 태스크가 검색되면 이를 실행합니다.태스크가 없을 때는 워커 스레드가 대기하고 있기 때문에 메모리가 사용되지 않지만 워커 스레드의 수는 충분히 적습니다(머신의 프로세서 수보다 많은 스레드가 있는 것은 무의미합니다.

따라서 비동기 프로시저 호출의 라이프 사이클은 두 단계로 구성됩니다. 패시브 스테이지(입력 데이터를 수동적으로 기다리는 경우)와 액티브스테이지(통상적인 프로시저 호출과 같은 방법으로 데이터가 계산되는 경우)입니다.

비동기 프로시저 콜의 오브젝트는 이후 새로운 데이터를 사용한 프로시저 콜에 재사용할 수 있습니다.이를 통해 객체 지향 프로그래밍 패러다임으로 프로그래밍된 객체에서 일반적으로 수행되는 것처럼 계산된 출력 데이터를 해당 객체에 축적할 수 있습니다.계산된 데이터를 일관된 상태로 유지하기 위해 동일한 프로시저 호출이 동시에 실행되지 않도록 각별히 주의해야 합니다.이러한 재사용 가능한 비동기 프로시저는 Actor라고 불립니다.Actors를 사용한 프로그래밍은 Actor 모델과 Dataflow 프로그래밍에 설명되어 있습니다.차이점은 Actor 모델의 Actor에는 입력 데이터를 수신하는 포트와 입력 메시지의 시리얼 처리를 제공하는 (숨김) 포트가 정확히 두 개 있는 반면 Dataflow 프로그래밍의 Actor에는 여러 포트가 있을 수 있으며 모든 입력에 데이터 또는 권한이 포함되어 있는 경우 실행 서비스로 이동합니다.

몇 가지 구체적인 구현

Windows 에서는, 비동기 프로시저 콜(약칭 APC)은, 특정의 [1]스레드의 컨텍스트에서 비동기적으로 실행되는 함수입니다.APC는 시스템(커널 모드 APC) 또는 애플리케이션(사용자 모드 APC)[1]에서 생성할 수 있습니다.

레퍼런스

  1. ^ a b "Asynchronous Procedure Calls (Windows)". Retrieved 1 March 2017.