[Flutter] 비동기 처리 동작 방식 이해 (Future)

민태호·2024년 8월 27일
0

Flutter

목록 보기
8/23
post-thumbnail

Dart는 싱글스레드이다.

한 번에 하나의 작업을 실행하고, 실행 중 다른 작업의 개입이 없다.


스레드가 뭐지?

프로세스 내에서 실행되는 흐름의 단위

실질적인 앱의 동작을 담당한다.
-> 10만 사이클의 반복문이 있어도 끝날 때까지 기다린다는 의미
-> 비효율적 ;;

그런데, Dart언어를 사용하는 Flutter로 개발한 앱이 복잡하더라도 잘 돌아간다.
-> 왜?


Event loop

Flutter 앱을 실행 시, isolate 스레드가 실행된다. 이것이 앱 전체를 총괄하는 단일 스레드이다.

isolate 스레드 실행 시 아래 3가지 작업이 순서대로 실행

  • FIFO 방식으로 micro taskevent를 준비
  • main함수 실행
  • event loop 실행 (micro task, event)

gesture 처럼 외적으로 전달되는 이벤트들이 이벤트 큐에 등록 후 실행되는 것 처럼, Future, Stream도 동일하게 실행됨.

이 처럼 Future는 동기적 실행이 아닌, event loop를 통해 FIFO로 처리되는 하나의 event로 동작한다.


Future 실행 단계

  • Future 객체가 내부 배열에 등록
  • Future 관련 코드들이 이벤트 큐에 등록
  • 불완전 Future 객체 반환
  • 동기적으로 실행될 코드 우선 실행
  • 완전한 데이터가 Future 객체로 전달
profile
Flutter Developer

0개의 댓글