반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바
- 프로그래머스
- dfs
- element tree
- 완전탐색
- 알고리즘
- Android
- 재귀
- 비동기 처리
- linebreak
- Render object tree
- flutter
- 거리알고리즘
- Lazy
- 싱글톤
- Java
- 자료구조
- 플러터 동작
- 앱아이콘 변경
- zwj
- 코틀린
- IOS
- Widget Tree
- Singleton
- dart
- 플러터
- 에러
- 프리즈드
- 초기화
- Kotlin
Archives
- Today
- Total
모바일 개발하는 자바리안의 메모장
Flutter - Single-threaded 환경에서 비동기 처리가 어떻게 가능할까 본문
반응형
Dart는 Single-threaded 환경에서 작동한다.
그럼 우리가 await, async 등을 통해 사용한 비동기 처리는 어떻게 가능할까...
정답은 Event Loop이다.
이벤트 루프는 애플리케이션에서 발생하는 이벤트(예: 사용자 입력, 타이머, 네트워크 응답 등)를 처리하며, 이러한 이벤트가 발생할 때마다 이벤트 루프는 각 이벤트에 대한 callback을 실행한다.
이벤트는 Event Queue에 추가되며 다음과 같이 2개 타입의 Event Queue가 존재한다 :
1. Microtask Queue
2. Event Queue
Microtask Queue는 이벤트 루프가 처리해야 할 가장 높은 우선순위를 가지는 작업을 담는 Queue로 Microtask Queue에는 Future.microtask()나 Future.sync()와 같이 비동기 작업을 스케줄링하는 메소드가 있다. 이 작업들은 현재 실행 중인 이벤트 루프의 작업이 모두 완료된 이후에 바로 실행된다.
Async/await를 실행했을 때 Future 정보를 microtask에 담아둔 뒤, 다른 event들을 처리하다가 future가 completed 상태가 됐을 때 가장 높은 우선순위로 처리한다.
실제로는 sequental하게 처리되지만 Event Loop에 의해 우선순위를 고려하여 빠르고, 효율적으로 evente들을 처리해주기 때문에 사용자 입장에선 비동기 처리로 느껴지게되는 것이다.
반응형
'Flutter' 카테고리의 다른 글
Flutter - iOS 빌드 오류(Cocoapods) 해결 방법 (0) | 2023.10.11 |
---|---|
Flutter - Widget, Element, Render Object tree (0) | 2023.05.17 |
Flutter - Freezed 을 이용한 Model 관리 (0) | 2022.11.16 |
Flutter - late 키워드 (0) | 2022.11.08 |
Flutter - export 를 활용한 dart 파일 관리 (0) | 2022.11.07 |
Comments