Dart/비동기

Dart 문법 비동기 - 동기 vs 비동기 프로그래밍

codeJunH 2024. 8. 22. 16:51

동기 프로그래밍

동기 프로그래밍은 코드가 순차적으로 실행되며, 각 작업이 완료된 후에 다음 작업이 시작되는 방식이다.

주요 특징:

  1. 코드가 위에서 아래로 순차적으로 실행된다.
  2. 하나의 작업이 완료될 때까지 다른 작업은 블로킹(blocking)된다.
  3. 코드의 흐름을 예측하기 쉽다.

예제:

이 예제에서는 '작업 1', '작업 2', '작업 3'이 순차적으로 실행된다.

 

 

비동기 프로그래밍

비동기 프로그래밍은 작업의 완료를 기다리지 않고 다음 작업을 실행할 수 있는 방식이다.

주요 특징:

  1. 긴 작업을 시작한 후 즉시 다음 작업으로 넘어간다.
  2. 작업의 완료 순서가 시작 순서와 다를 수 있다.
  3. 리소스를 효율적으로 사용할 수 있다.

Dart에서 비동기 프로그래밍을 위해 주로 Future, async, await 키워드를 사용한다.

 

예제:

이 예제에서 '작업 2'는 2초 후에 완료되지만, 그 동안 프로그램이 블로킹되지 않는다.

 

 

동기 vs 비동기: 언제 무엇을 사용해야 할까?

동기 프로그래밍 사용 시기:

  • 간단하고 빠르게 완료되는 작업
  • 순차적인 처리가 필요한 경우
  • 결과를 즉시 사용해야 하는 경우

비동기 프로그래밍 사용 시기:

  • 파일 I/O 작업
  • 네트워크 요청
  • 데이터베이스 쿼리
  • 복잡한 계산이나 시간이 오래 걸리는 작업

예를 들어, 데이터베이스에서 게시판 글을 가져오는 작업, 복잡한 미적분 계산, 이미지 인코딩 등은 비동기로 처리하는 것이 좋다.

 

 

Dart에서의 비동기 프로그래밍 도구

  1. Future: 비동기 작업의 결과를 나타내는 객체
  2. async/await: 비동기 코드를 동기 코드처럼 쉽게 작성할 수 있게 해주는 키워드
  3. Stream: 연속적인 비동기 이벤트를 처리하는 데 사용

 

예제:

이 예제에서는 async와 await를 사용하여 비동기 작업을 처리하고 있다.