본문 바로가기

Flutter/튜토리얼

Flutter - Isolates / Thread

플러터의 언어인 다트의 특징은 다음과 같다.

1. 객체지향

2. Optional type

3. 메모리를 공유하는 thread 대신에 독립 메모리를 가지는 isolate 사용(궁금증)

4. 자바스크립트 호환

 

여기서 isolate가 무엇인지 살펴보자.

 

Isolate는 자체 메모리 공간에서 이벤트를 지속적으로 처리하는 이벤트 루프가 있는 스레드. 실행가능한 이벤트가 있고, 대기가 없으면 스캔후 실행할 수 있다. dart에서는 isolate를 생성하여  multithread로 실행할 수 있다. 

 

하나의 스레드가 자신의 메모리 공간을 가지고, 자신의 gc를 가진다. 예측이 가능하므로 효율적이다?

 

두 개의 isolate가 같이 작업하려면 메시지를 주고 받아야한다. 멀티스레드 사용시 주의해야 하는 공유자원에 대한 컨트롤에 신경 쓰지 않아도 되는 장점이 있다.

 

Isolate는 spawn을 통해생성한다.

Isolate.spawn(func, number);

 

 

 

이벤트 루프는 future, async/await, stream을 실행할 수 있다.

 

이벤트 루프에서는 3 가지 이벤트가 실행된다.

- 초기 UI 생성 이벤트

- 버튼 클릭 이벤트

- 네트워크 응답 이벤트 

  

 

이벤트 루프가 마이크로 태스크 대기열에서 작업을 실행하는 동안, 이벤트 대기열은 멈춘다. 그래픽을 그실 수 없고, 마우스 클릭을 처리할 수 없고, I/O에 반응 할 수 없다. 

 

 

(좀더 살펴보고 보강한다.)

 

 

 

출처

1. 모바일 앱 개발을 위한 다트&플러터 - 서준수

 

2.

https://medium.com/flutter-community/thread-and-isolate-with-flutter-30b9631137f3

'Flutter > 튜토리얼' 카테고리의 다른 글

dart 타입 검사 연산자/ 조건 표현식(null check)  (0) 2022.02.02
Flutter Dart 함수  (0) 2022.02.02
Flutter Button  (0) 2022.02.01
배치와 Scaffold  (0) 2022.01.31
기본 위젯 구현하기  (0) 2022.01.31