Akka 문서 - 용어, 개념

Ada·2023년 9월 7일

Akka

목록 보기
13/32

동시성 vs 병렬성 (Concurrency vs. Parallelism)

동시성(Concurrency):

두 개 이상의 작업이 동시에 진행되고 있지만 꼭 동시에 실행될 필요는 없다. 즉, 작업들이 번갈아 가면서 일부분씩 실행될 수 있다.

병렬성(Parallelism):

작업이 정말로 동시에 실행되는 경우를 말한다.

비동기 vs 동기 (Asynchronous vs. Synchronous)

동기(Synchronous):

메서드 호출이 끝날 때까지 호출한 쪽이 기다려야 함.

비동기(Asynchronous):

메서드를 호출하고 나서 바로 다른 일을 할 수 있고, 메서드의 완료는 다른 방법(콜백, Future, 메시지 등)으로 알려줌.

논블로킹 vs 블로킹 (Non-blocking vs. Blocking)

블로킹 (Blocking):

한 스레드의 지연이 다른 스레드의 지연을 무한히 발생시킬 수 있음.

논블로킹 (Non-blocking):

어떤 스레드도 다른 스레드를 무한히 지연시키지 않음.

데드락, 스타베이션, 라이브락 (Deadlock vs. Starvation vs. Live-lock)

데드락(Deadlock):

여러 참가자가 서로를 기다리고 있어서 아무도 진행할 수 없는 상태

스타베이션(Starvation):

몇몇 참가자는 진행할 수 있지만, 하나 이상의 참가자는 그렇지 못한 상태

라이브락(Livelock):

참가자들이 지속적으로 상태를 변경하지만 아무도 진행하지 못하는 상태

레이스 컨디션 (Race Condition)

이벤트의 순서에 대한 가정이 외부의 불확실한 요인에 의해 위반될 수 있는 상황

논블로킹 보장 (Non-blocking Guarantees)

Wait-freedom:

모든 호출이 유한한 단계 내에 끝남

Lock-freedom:

무한히 많은 호출 중에 몇 개는 유한한 단계 내에 끝남

Obstruction-freedom:

다른 스레드가 방해하지 않을 때 유한한 단계 내에 끝남

profile
백엔드 프로그래머

0개의 댓글