Coroutine - 동시성 vs 병렬성

Posted by RoadtoS7 on August 04, 2021 · 1 min read

간단하게 정리해서, 다음과 같다.

  • 동시성: 두개의 작업이 빠르게 번갈아 가면서 처리되어서, 동시에 처리되는 것처럼 보이는 것
    ex) 싱글 프로세서와 멀티 스레드
  • 병렬성: 두개의 작업이 같은 시점에 동시에 처리되는 것
    ex) 멀티 프로세서와 멀티 스레드

동시성

동시성 코드는 코드 내부의 여러개의 작업이 비슷한 시점에 실행시작되었을 때, 그 중 어느 작업이 먼저 완료되더라도 항상 같은 결과를 내는 코드를 말한다.

예를 들어서 코드 내에 A함수, B함수, C함수가 있다고 해보자.
A함수, B함수, C함수가 동시에 실행되었을 때, 어떤 함수가 먼저 완료될지 모르는 상황에서, 어떤 것이 먼저 완료되는 결과값이 항상 동일하다면 이것은 동시성 코드라고 한다.

이렇듯 동시성을 갖춘 코드를 만들기 위해서는 작업 완료의 순서에 관계없이 결과가 동일해야 한다.

순차 코드 말고 동시성 코드를 사용하는 이유?

  • 동시성 코드에 비해 성능이 저하될 수 있다.
  • 하드웨어 자원을 제대로 활용하지 못할 수 있다.