ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 비동기 async 개념, 키워드 정리
    개발 관련 2021. 8. 4. 16:26

    키워드: 쓰레드, 동기(sync), 비동기(async), 동시(concurrent), 직렬(serial), thread-safe

     

    - 쓰레드: 프로그램 안, 프로세스 내에서 실행되는 흐름의 단위.

    - 멀티쓰레드: 프로세스 내에서 실행될 수 있는 쓰레드가 여러 개인 것이다.

     

    멀티 쓰레드 환경에서 1번 쓰레드가 2번 쓰레드에 작업을 넘겼을 때,

    이후 1번 쓰레드는 어떻게 할 것인가에 따라 동기 비동기 개념이 나뉜다.

     

    동기 vs 비동기 

    - 동기: 작업이 완료되기 까지 기다린다.

    1번 쓰레드가 2번 쓰레드에 작업을 넘기고, 2번 쓰레드의 작업 완료까지 기다린다.

    즉, 2번 쓰레드 작업 완료까지 1번 쓰레드는 대기한 후, 다음 일을 진행한다.

     

    - 비동기: 작업의 완료를 안 기다린다.

    1번 쓰레드가 2번 쓰레드에 작업을 넘기고, 2번 쓰레드의 작업 완료를 안 기다린다.

    즉, 1번 쓰레드는 작업을 넘기고, 바로 다음 일을 진행한다. )

     

    Q. 비동기란 왜 필요할까?

    A. 작업이 오래 걸리는 경우, 처리를 위임하고 다음 일을 처리하기 위해.     ( 대부분 네트워크 등의 작업 )

     

    직렬 처리 (serial), 동시 처리 (concurrent)

    - 1번 쓰레드에서 작업을 분산 처리를 시켰을 경우, 작업이 분배되는 쓰레드의 개수에 따라 나뉜다.

    - 직렬 처리: 분산 처리 시켰을 때, 다른 한 개의 쓰레드에서 작업을 처리한다.

    - 동시 처리: 분산 처리 시켰을 때, 다른 여러 개의 쓰레드에서 작업을 나눠 처리한다.

     

    분산 처리를 하지만, 순서를 지켜야 할 작업들을 처리할 때 직렬 처리를 사용한다.

     

     

    - 동기 직렬 처리: 다른 한 개의 쓰레드에 분산 처리를 시키고, 처리가 완료되기 까지 기다린다.

    - 동기 동시 처리: 다른 여러 개의 쓰레드에 분산 처리를 시키고, 처리가 완료되기 까지 기다린다. 

     

    - 비동기 직렬 처리: 다른 한 개의 쓰레드에 분산 처리를 시키고, 처리가 완료되기 까지 기다리지 않는다.

    - 비동기 동시 처리: 다른 여러 개의 쓰레드에 분산 처리를 시키고, 처리가 완료되기 까지 기다리지 않는다.

     

     

    Thread-safe: 멀티쓰레드 처리 중 동시 접근 등의 문제를 해결해야 하는데, 이를 해결했을 때 Thread-safe 하다 한다.

    - 인스턴스는 Immutable 해야 한다. *( var / let = mutable / immutable )

    mutable한 인스턴스를 하나 이상의 스레드에서 접근 및 변경한다면 문제가 발생하기 때문이다.

    - 또한 상태 값 등이 없으며, side-effect가 없는 함수를 작성해야 한다. -> 함수형 프로그래밍 적용하면 좋을 것

    댓글

Designed by Tistory.