ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • concurrency(동시성)와 parallelism(병렬성)의 차이
    Interview 2025. 3. 24. 00:03
    728x90

     

    구분 Concurrency (동시성) Parallelism (병렬성)
    정의 여러 작업을 번갈아 가며 처리 여러 작업을 동시에 처리
    목적 효율적인 자원 사용 빠른 실행 속도
    실행 방식 한 번에 하나만 실행되지만 빠르게 전환 진짜 동시에 여러 개 실행
    전제 조건 하나의 CPU 코어로도 가능 둘 이상의 CPU 코어 필요
    예시 바텐더가 여러 고객을 순차 처리 바텐더 3명이 각자 고객을 동시에 처리

    🔍 더 구체적으로 비교

    ✅ 1. Concurrency (동시성)

    • 시스템이 여러 작업을 동시에 처리하는 것처럼 보이게 함
    • 실제로는 작업을 잘게 쪼개서 빠르게 스위칭
    • OS의 스레드 스케줄링, Go의 goroutine, Node.js의 event loop가 대표 예

    💡 예시

    한 명의 요리사가 여러 요리를 동시에 준비하려고,
    A요리를 끓이는 동안 B요리를 자르러 가고, 다시 A로 돌아오는 방식

     

     

    ✅ 2. Parallelism (병렬성)

    • 여러 작업을 진짜 동시에 실행
    • 일반적으로 멀티코어 CPU에서만 가능
    • 병렬 처리를 위한 쓰레드/프로세스를 여러 개 돌림

    💡 예시

    4명의 요리사가 각각 요리를 동시에 함 → 처리 속도 빠름

     

    🧠 그림으로 이해

    # Concurrency (동시성)
    [Task A]----|      |----|      |
    [Task B]    |----|      |----|      (순차 스위칭)
    
    # Parallelism (병렬성)
    [Task A]----|----|----|----|  (CPU1)
    [Task B]----|----|----|----|  (CPU2)

     

     

    ✅ 함께 쓰이는 경우도 많다

    현대 시스템은 보통 둘 다 사용합니다:

    • Concurrency → 효율적인 자원 스케줄링 (많은 요청 핸들링)
    • Parallelism → 속도 향상 (다중 코어 활용)

    예: Go 언어는 goroutine으로 concurrency, GOMAXPROCS로 parallelism

     

    📌 예시로 정리

    예시 동시성? 병렬성?
    웹 서버가 1,000개의 요청을 goroutine으로 처리 ✅ (CPU가 여러 개일 경우)
    싱글 스레드 Node.js가 여러 파일 I/O 처리
    멀티코어 머신에서 동영상 인코딩을 병렬 수행

    ✅ 정리

    핵심 포인트 설명
    Concurrency 여러 작업을 진행 중일 수 있도록 함 (시간 분할)
    Parallelism 여러 작업을 동시에 실행함 (코어 분할)
    둘의 관계 동시성은 논리적, 병렬성은 물리적

     

     

    728x90
Designed by Tistory.