분류 전체보기

Boost C++ Libraries/Boost.Asio

Boost.Asio 개요 - 핵심 개념 및 기능 - 버퍼

버퍼 (Buffers) 기본적으로, I/O는 버퍼라고 불리는 메모리 인접 영역과 데이터를 주고받는 것을 포함한다. 이러한 버퍼는 포인터와 크기(바이트)로 구성된 튜플로 단순하게 표현할 수 있다. 효율적인 네트워크 응용프로그램을 개발을 허용하기 위해 Boost.Asio는 Scatter-Gather(분산-수집) 작업의 지원을 포함한다. 이러한 작업은 하나 이상의 버퍼를 포함한다: Scatter 읽기는 데이터를 여러 버퍼로 수신한다. Gather 쓰기는 여러 버퍼를 전송한다. ※ Scatter-Gather는 분산-수집으로 번역이 가능하지만, 글의 전체적인 이해를 위해 영문 그대로 사용한다. 그러므로 버퍼 컬렉션을 표현하려면 추상화가 필요하다. Boost.Asio에서 사용되는 접근 방식은 단일 버퍼를 나타내는 ..

Boost C++ Libraries/Boost.Asio

Boost.Asio 개요 - 핵심 개념 및 기능 - 스트랜드: 명시적 잠금없이 스레드 사용

스트랜드: 명시적 잠금 없이 스레드 사용 (Strands: Use Threads Without Explicit Locking) 스트랜드(strand)는 이벤트 핸들러의 엄격한 순차 호출(즉, 동시 호출 없음)로 정의된다. 스트랜드(strands)를 사용하면 멀티스레드 프로그램에서 명시적 잠금(예:뮤텍스 사용)없이 코드를 실행할 수 있다. 스트랜드(strands)는 다음 선택 가능한 방식에서 설명하는 것처럼 암시적이나 명시적일 수 있다: 하나의 스레드에서만 io_context::run()을 호출하면 모든 이벤트 핸들러가 암시적으로 스트랜드(strand)에서 실행되는 것을 의미한다. 핸들러가 run() 내부에서만 호출된다는 io_context의 보장 때문이다. 연결과 관련된 비동기식 작업용 단일 체인이 있는..

Boost C++ Libraries/Boost.Asio

Boost.Asio 개요 - 핵심 개념 및 기능 - 스레드와 Boost.Asio

스레드와 Boost.Asio (Threads and Boost.Asio) 스레드 안정성 일반적으로 개별 개체를 동시에 사용하는 것은 안전하지만, 단일 개체를 동시에 사용하는 것은 안전하지 않다. 하지만 io_context와 같은 유형은 단일 개체를 동시에 사용하는 것이 안전하다는 더 강력한 보증을 제공한다. 스레드 풀 여러 스레드에서 io_context::run()을 호출하여 완료 핸들러를 호출할 수 있는 스레드의 풀을 설정할 수 있다. 이 접근 방식은 스레드 풀에서 임의 계산 작업을 수행하는 수단으로 post()와 함께 사용할 수 있다. io_context 스레드 풀에 결합된 모든 스레드는 동등한 것으로 간주되며, io_context는 임의의 방식으로 작업을 분산시킬 수 있다는 점에 유의해야 한다. 내..

Boost C++ Libraries/Boost.Asio

Boost.Asio 개요 - 핵심 개념 및 기능 - Proactor 디자인 패턴: 스레드 없는 동시 실행

Proactor 디자인 패턴: 스레드 없는 동시 실행 (The Proactor Design Pattern: Concurrency Without Threads) Boost.Asio 라이브러리는 동기식과 비동기식 작업에 대한 지원을 함께 제공한다. 비동기식 지원은 Proactor 디자인 패턴 [POSA2]을 기반으로 한다. 전용-동기식이나 Reactor 접근 방식과 비교하는 경우, 이 접근 방식의 장점과 단점은 아래에 요약되어 있다. Proactor와 Boost.Asio 플랫폼 세부사항을 참조하지 않고, Boost.Asio에서 Proactor 디자인 패턴이 어떻게 구현되는지 살펴본다. Proactor 디자인 패턴 ([POSA2]에서 수정됨) 비동기식 작업 (Asynchronous Operation) 소켓에서..

Boost C++ Libraries/Boost.Asio

Boost.Asio 개요 - 핵심 개념 및 기능 - Boost.Asio 기본 구조

Boost.Asio 기본 구조 (Basic Boost.Asio Anatomy) Boost.Asio는 소켓과 같은 I/O 개체에 대해 동기식과 비동기식 작업을 모두 수행할 수 있다. Boost.Asio를 사용하기 전에, 프로그램 내에서 Boost.Asio의 다양한 부분들이 함께 작동하는 방식에 대한 개념적 그림을 보는 것이 유용할 수 있다. 입문 예제로 소켓에서 연결 작업을 수행할 때 어떤 일이 발생하는지 살펴본다. 동기식 작업을 살펴보는 것부터 시작할 것이다. 프로그램에는 boost::asio::io_context 개체, boost::asio::thread_pool 개체 또는 boost::asio::system_context와 같은 I/O 실행 컨텍스트가 적어도 하나 있다. 이런 I/O 실행 컨텍스트는 ..

까마귀75
'분류 전체보기' 카테고리의 글 목록 (472 Page)