반응형
비동기 에이전트 라이브러리(Asynchronous Agent Library)는 아래와 같은 특성을 갖는 병렬처리 라이브러리입니다.
- MPI와 같이 메시지 기반으로 병렬 처리를 합니다.
참고: [MPP] Introduction To Message Passing Interface(MPI) - 액터 기반(Actor-Based) 기반의 프로그래밍 모델을 제공합니다.
액터 기반의 프로그래밍 모델은 각각의 독립된 처리를 하는 액터들이 메세지를 주고 받으며 병렬처리를 하는 프로그래밍 방식입니다.
참고: Actor-based Concurrency
비동기 에이전트 라이브러리는 독립적인 일을 하는 에이전트 들이 존재하며 이들은 데이터 흐름에 기초한 비동기적 통신을 위한 연결을 가지고 있습니다. 위의 참고 자료를 보면 액터 기반 병렬처리 모델은 액터들 간에 채널이 아닌 주소로 서로 통신한다고 되어 있는데 비동기 에이전트 라이브러리는 메세지 블록을 연결하여 통신하는 형태입니다.
비동기 에이전트 라이브러리는 아래와 같은 3가지 구성 요소를 가집니다.
- 비동기 에이전트
일을 수행하는 하나의 액터인데 쓰레드처럼 일을 하는 하나의 함수 객체 정도로 봐도 무방합니다. - 비동기 메세지 블록
액터들간에 메세지를 서로 주고 받는 연결이라고 보면 됩니다. - 메세지 전달 함수
비동기 에이전트가 비동기 메세지 블록을 통하여 메세지를 주고 받는 함수API로 보면 무방합니다.
비동기 에이전트 라이브러리의 장점은 아래와 같습니다.
- 공유 객체를 사용하는 것이 아니라 메세지 전달을 통하여 공유 리소스를 사용하는 관계로 공유 리소스 사용에 대한 확장성을 향상 시킬 수 있습니다.
- 공유 객체에 대한 동기화가 메세지 전달에 의하여 이루어지는 관계로 공유 관련 오류가 나올 가능성을 줄입니다.
에이전트 라이브러리를 사용하면 좋은 경우는 아래와 같습니다.
- 여러 개의 동작이 서로 비동기적으로 통신하며 병렬처리를 하는 경우
- 락과 같은 동기화 객체가 아닌 메세지 통신을 이용하여 병렬처리를 하는 경우
이 프로그래밍 모델은 처리 데이터 관련 메세지를 주고 받으며 결국 최종 결과 값을 만들어내는 데이터 처리 파이프라인이나 네트워크에 종종 사용됩니다.
반응형
'개발 라이브러리 & 툴' 카테고리의 다른 글
C++ boost json array 생성 및 파싱 예제 (0) | 2022.05.06 |
---|---|
MS 비동기 에이전트 라이브러리 소개: #2 Hello World (0) | 2021.12.25 |
비주얼스튜디오(Visual Studio) 솔루션(*.sln) 커맨드라인 빌드 응용 (0) | 2021.11.30 |
C++ boost json 구조체와 json 문자열간 변환 예제 (5) | 2021.11.21 |
[MongoDB] C/C++ BSON 한글 문자열 입출력 (0) | 2021.11.20 |
boost locale을 이용한 C++에서의 Multi Byte와 UTF8간의 문자열 변환 (0) | 2021.11.19 |
[MongoDB] Mongo C/C++ Driver 관련 자료 (0) | 2021.11.10 |
boost asio address from_string 사용시 주의할 점 (0) | 2021.10.25 |