멀티스레딩과 비동기는 모두 병렬성과 동시성을 처리하기 위한 개념이다.
작동 방식, 사용하는 환경에서 차이가 있다.
멀티스레딩은 하나의 프로세스 내에서 여러 스레드를 생성하여 병렬로 작업을 처리하는 방식이다.
각 스레드는 독립적으로 실행되며, 서로 메모리를 공유한다.
CPU의 코어가 여러 스레드를 번갈아 실행하거나, 여러 코어에서 동시에 스레드를 실행하여 병렬 작업을 수행한다.
스레드 간의 컨텍스트 스위칭(작업 전환)이 발생하므로 일부 오버헤드가 존재한다.
주로 CPU 바운드 작업(계산량이 많은 작업)에 적합하다.
대용량 데이터 처리 (예: 데이터 분석, 이미지 렌더링).
서버에서 동시에 여러 요청을 처리할 때(스레드 풀 방식).
CPU 코어를 최대한 활용하여 병렬 처리가 가능하다
작업이 독립적일 때 효율적이다
스레드 간 공유 자원 접근 시 데드락이나 레이스 컨디션 문제를 방지해야 한다
스레드 생성과 관리에 비용이 발생한다
비동기는 작업을 비동기적으로 실행하여, 하나의 작업이 완료될 때까지 기다리지 않고 다음 작업을 처리할 수 있도록 하는 방식이다.
이벤트 루프(Event Loop)와 콜백 메커니즘을 통해 작동한다
I/O 바운드 작업(네트워크, 파일 읽기/쓰기, DB 조회)에 적합하다
하나의 스레드(주로 메인 스레드)가 논블로킹 방식으로 작업을 관리하며, 완료된 작업은 이벤트 큐에서 처리된다.
API 호출 및 응답 처리
웹 브라우저에서 사용자 입력을 처리하면서 동시에 파일 다운로드
메모리와 스레드 생성 비용이 적다
대규모 I/O 작업 처리에 효율적이다
복잡한 비동기 흐름을 관리하기 어렵다(콜백 헬).
CPU 바운드 작업에는 적합하지 않다.
[운영체제] 프로세스 생성 (0) | 2024.11.05 |
---|---|
[운영체제] Lock을 이용한 동시성 제어 (0) | 2024.10.15 |
[운영체제] 8. 스레드 (0) | 2021.03.23 |
[운영체제] 2. Process (0) | 2021.03.17 |