한 번에 하나의 작업을 실행하고, 실행 중 다른 작업의 개입이 없다.
프로세스 내에서 실행되는 흐름의 단위
실질적인 앱의 동작을 담당한다.
-> 10만 사이클의 반복문이 있어도 끝날 때까지 기다린다는 의미
-> 비효율적 ;;
그런데, Dart언어를 사용하는 Flutter로 개발한 앱이 복잡하더라도 잘 돌아간다.
-> 왜?
Flutter 앱을 실행 시, isolate
스레드가 실행된다. 이것이 앱 전체를 총괄하는 단일 스레드이다.
isolate
스레드 실행 시 아래 3가지 작업이 순서대로 실행
FIFO
방식으로 micro task
와 event
를 준비main
함수 실행event loop
실행 (micro task
, event
)gesture
처럼 외적으로 전달되는 이벤트들이 이벤트 큐에 등록 후 실행되는 것 처럼, Future
, Stream
도 동일하게 실행됨.
이 처럼
Future
는 동기적 실행이 아닌,event loop
를 통해FIFO
로 처리되는 하나의event
로 동작한다.
Future
객체가 내부 배열에 등록Future
관련 코드들이 이벤트 큐에 등록Future
객체 반환Future
객체로 전달