[학습정리]동기와 비동기

김정현·2024년 7월 25일

동기와 비동기의 개념

동기(Synchronous)

  • 동기란? 작업이 순차적으로 일어난다는 뜻입니다.
    즉, 동기의 핵심은 한 작업이 시작되면 해당 작업이 완료될 때 까지 다음 작업을 하지 못하고 기다려야 합니다.

동기가 동시에 일어난다는 뜻이기 때문에 요청과 해당 요청에 대한 결과가 동시에 일어난다고 생각할 수 있습니다

비동기(Asynchronous)

  • 비동기 란? 작업이 독립적으로 동시에 실행될 수 있다는 뜻입니다. 즉, 요청에 대한 결과를 받기 전에 다음 작업을 시작할 수 있습니다.

비동기 는 요청과 해당 요청에 대한 결과가 동시에 일어나지 않는다고 생각할 수 있습니다.

그림으로 보는 동기와 비동기

  • 동기의 경우 순차적으로 각각의 Task가 끝난 후 , 다음 Task가 실행되는 반면에, 비동기의 경우는 각각의 Task가 독립적으로 실행되며, 다른 Task가 끝나지 않아도 실행 될 수 있습니다.

동기와 비동기의 장.단점

동기(Synchronous)

장점

  • 설계가 간단하고 직관적입니다.
  • 코드의 진행이 순차적이기 때문에 코드의 흐름을 이해하기 쉽습니다.

단점

  • 하나의 작업이 완료될 때까지 다른 작업들이 대기해야 하므로 자원 활용이 비효율적입니다.

비동기(Asynchronous)

장점

  • 여러 작업이 동시에 독립적으로 진행될 수 있어서 자원을 효율적으로 활용할 수 있습니다.

단점

  • 동기식보다 설계가 복잡하다.

블로킹과 논블로킹

동기와 비동기를 공부하면서 계속해서 나왔던 블로킹과 논블록킹에 대해서도 정리해보려고 합니다.

동기 / 비동기가 작업에 대한 완료여부의 관점이였다면, 블로킹 / 논블로킹은 현재의 작업이 block(차단 / 대기)되느냐의 여부의 관점이라고 이해했습니다.

사실 아직 동기 / 비동기 그리고 블로킹 / 논블로킹에 대해서 확실하게 차이점을 판단을 하진 못하겠다..

블로킹 + 동기

  • 다른 작업이 처리되는 동안 자신의 작업은 처리하지않고 다른 작업의 완료 여부를 받아 순차적으로 처리하는 방식

블로킹 + 비동기

  • 블로킹 + 비동기 형태는 잘 마주치기 않는다고한다..
  • 동기 + 블로킹 형태와 차이가 없어 보인다.. 그래서 해당 방식은 안티패턴으로 치부하기도 한다.

논블로킹 + 동기

  • 다른 작업이 처리되는 동안 자신의 작업도 처리하기 때문에 논블로킹이지만, 다른 작업의 결과가 필요하기 때문에 계속해서 다른 작업의 완료여부를 물어본다.

논블로킹 + 비동기

  • B작업(다른 작업)이 처리되는 동안 A작업(자신의 작업)을 처리하고 B작업이 끝나면 Callback을 실행한다.

💡 아직 뭔가 블로킹과 논블로킹 그리고 동기와 비동기의 차이에 대해서 확실하게 파악하지 못한거 같다..
공부를 해보니 비슷한듯 하지만 어딘가는 다른 개념인거 같은데.. 흠.. 그 어딘가를 아직 잘…

비동기 작업의 동기화 처리

profile
안녕하세요 반갑습니다

0개의 댓글