태그: 비동기
21편
-
JavaScript 동작 원리: 실행 컨텍스트, 프로토타입 체인, 클로저, 이벤트 루프
실행 컨텍스트와 스코프 체인이 식별자를 찾는 과정, [[Prototype]] 체인과 new의 연결, 클로저가 렉시컬 환경을 붙잡는 방식, Promise·setTimeout의 실행 순서를 결정하는 이벤트 루프를 예제로 설명합니다.
-
I/O 멀티플렉싱 비교: select·poll·epoll·kqueue·IOCP와 C10K 문제
I/O 멀티플렉싱 정리. Blocking I/O의 한계에서 출발해 select, poll, epoll, kqueue, IOCP의 동작 방식과 차이를 코드와 성능 비교로 설명하고 C10K 문제 해결 방법을 다룹니다.
-
JavaScript 비동기 디버깅 실전 사례 | Promise 체인 에러 추적하기
간헐적으로 발생하던 Unhandled Rejection이 에러 핸들러 누락 때문이었음을 추적한 사례입니다. 사라지는 스택 트레이스를 복원하고, async/await 전환, 전역 핸들러, Express 에러 미들웨어, Sentry 연동으로 해결합니다.
-
Kotlin 코루틴 vs 스레드: 비용 차이와 비동기 처리 선택 기준
OS 스레드와 사용자 레벨 코루틴의 생성 비용, 컨텍스트 스위칭, 메모리 사용량 차이를 비교하고, coroutineScope의 구조적 동시성과 10개 API 동시 호출 예제로 코루틴과 스레드를 고르는 기준을 설명합니다.
-
Swift 비동기 프로그래밍 | async/await, Task
async/await와 async throws 기본에서 시작해 Task 생성, async let으로 병렬 실행하기, Actor로 공유 상태를 격리하는 방법을 설명합니다. API 클라이언트 예제와 withTaskGroup으로 여러 요청을 병렬로 모으는 예제로 실제 쓰임을 보여줍니다.
-
Rust 비동기 프로그래밍 | async/await, Tokio
Rust async/await와 Future 트레이트의 동작 원리, Tokio 런타임에서 태스크 생성과 병렬 실행, reqwest로 타임아웃·재시도가 있는 HTTP 요청, async 코드에서 Mutex·RwLock·채널을 고르는 기준을 예제로 설명합니다.
-
Node.js 비동기 프로그래밍 | Callback, Promise, Async/Await
에러 우선 콜백과 콜백 지옥, Promise 체이닝과 정적 메서드, async/await 병렬 처리와 에러 처리를 다루고, libuv 이벤트 루프 페이즈에서 process.nextTick과 Promise 마이크로태스크가 실행되는 순서를 예제로 설명합니다.
-
Kotlin 코루틴: launch vs async, suspend 함수, 코루틴 스코프와 구조화된 동시성, Flow
Kotlin 코루틴 정리. 스레드를 늘리지 않고 비동기 작업을 구조화하는 방법, launch와 async의 차이, suspend 함수와 디스패처, 코루틴 스코프, 병렬 실행, Flow를 안드로이드 예제로 다룹니다.
-
JavaScript 비동기 프로그래밍: 콜백, Promise, async/await
콜백 지옥이 생기는 이유에서 시작해 Promise 생성과 체이닝, Promise.all 등 정적 메서드, async/await 병렬 실행과 에러 처리를 다루고, 재시도·타임아웃·순차 처리 예제와 마이크로태스크 순서를 설명합니다.
-
enable_shared_from_this: this를 shared_ptr로 넘기는 법과 bad_weak_ptr 함정
C++ enable_shared_from_this 정리. shared_from_this()로 this를 안전하게 공유하는 방법, 생성자에서 호출할 때 나는 bad_weak_ptr 예외, weak_from_this()(C++17), 비동기 콜백 활용을 다룹니다.
-
C++ Asio Composed Operation | 비동기 함수 설계 [#7]
헤더를 읽고 길이만큼 바디를 읽는 두 단계 수신을 async_read_packet 하나로 묶는 Boost.Asio Composed Operation을 설계합니다. 상태 머신으로 비동기 호출을 연쇄하는 법과 async_initiate, 완료 토큰으로 콜백과 코루틴을 모두 지원하는 방법을 설명합니다.
-
Kotlin Coroutine: Channel vs Flow, 언제 쓰나 | 비교 실전 가이드
핫 스트림인 Channel과 콜드 스트림인 Flow가 생산과 수집 시점에서 어떻게 다른지 설명하고, 버퍼와 백프레셔 전략, SharedFlow·StateFlow 사용 시점, 구조화된 동시성 안에서 둘을 고르는 기준을 코드로 비교합니다.
-
C++ promise와 future: 스레드 간 결과 전달, std::async 실행 정책, shared_future
std::promise로 다른 스레드의 결과나 예외를 넘기고 std::future로 받는 흐름을 설명합니다. std::async의 launch::async와 deferred 정책 차이, get()을 두 번 부를 수 없는 이유, 타임아웃 대기, shared_future로 여러 스레드가 결과를 공유하는 방법을 예제로 봅니다.
-
C++ std::async와 launch 정책: future, deferred 실행, 흔한 함정
std::async에 launch::async와 launch::deferred를 지정했을 때 실행 시점이 어떻게 달라지는지 설명하고, 여러 future 결과 모으기, 예외 전달, wait_for로 상태 확인과 타임아웃 처리, 병렬 다운로드·맵 리듀스 예제를 다룹니다.
-
C++에서 RabbitMQ·Kafka 연동하기: 메시지 큐 기반 비동기 처리 구현과 에러 대응
주문 처리처럼 결제·재고·메일을 동기로 묶어 느려진 서비스를 RabbitMQ와 Kafka 프로듀서·컨슈머로 나누는 C++ 코드를 보여줍니다. 두 브로커의 선택 기준, ACK 전 크래시로 인한 메시지 유실, 리밸런스 중 오프셋 커밋 실패 대응도 담았습니다.
-
C++ Boost.Asio 고급 패턴 | 커스텀 서비스·타이머·시그널 [#52-1]
Boost.Asio에서 연결마다 타이머를 두는 서버, 시그널로 종료하는 서버를 만들 때 필요한 커스텀 서비스(타이머 휠), steady_timer 재사용, signal_set, strand, work_guard와 stop()의 차이, co_spawn·async_compose를 코드로 정리합니다.
-
C++ 비동기 작업과 Coroutine | co_await로 콜백 지옥 탈출하기 [#23-3]
C++20 코루틴으로 비동기 작업을 co_await하고, Task 타입을 설계하며, Asio와 연동하는 기본 패턴을 다룹니다. 콜백 지옥 해결, 에러 처리, 수명 관리, 성능 비교, 베스트 프랙티스, 프로덕션 패턴까지 실전 가이드.
-
C++ Asio 데드락 디버깅 | 비동기 콜백 실전
Asio 서버가 가끔 멈출 때 흔한 원인인 락을 잡은 채 비동기 완료를 기다리는 패턴과 락 순서 불일치를 시퀀스 다이어그램으로 설명합니다. strand로 락을 줄이는 설계, std::lock 사용, 멈춘 프로세스의 스레드 덤프로 원인을 좁히는 방법을 다룹니다.
-
C++ WebSocket 구현: 핸드셰이크와 프레임 구조, Beast 클라이언트·서버, Ping/Pong 하트비트
C++로 WebSocket 실시간 통신을 구현하는 방법. 프로토콜과 핸드셰이크, 프레임 구조, Boost.Beast 클라이언트·서버, Ping/Pong 하트비트, 자주 나는 에러와 성능 비교를 다룹니다.
-
Boost.Asio 입문: io_context, 비동기 타이머·읽기·쓰기, 핸들러 수명과 work_guard
Boost.Asio로 비동기 I/O를 시작하는 방법. 블로킹과 논블로킹 비교, io_context와 run, 비동기 타이머, async_read/async_write, 비동기 TCP 클라이언트·서버, 핸들러 수명과 work_guard 실수를 다룹니다.
-
Asio 이벤트 루프 동작 원리: run·poll 차이, post vs dispatch, work_guard, strand
Boost.Asio 이벤트 루프 정리. run/run_one/poll 차이, work_guard로 서버 유지하기, post와 dispatch, 멀티스레드 이벤트 루프와 strand, C++20 코루틴, 완료 핸들러 체이닝을 다룹니다.