Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
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
Archives
Today
Total
관리 메뉴

Flutter 개발 Story

Flutter 기본_isolate 본문

Flutter

Flutter 기본_isolate

flutter 개발하자 2021. 2. 15. 16:57

Isolate란?

Isolate는 모든 Dart코드가 실행되는 곳임.

마치 기계안의 작은 공간에 메모리 덩어리가 있는 것임.

 

단일 스레드가 이벤트 루프를 실행하고 있는 것

Dart에서는 스레드가 메모리를 가진 채로 isolate에 있음. 그리고 이벤트만 처리함.

만약 계산이 많은 경우 isolate.spwan이나 flutter 계산 함수를 사용하면 됨. 둘 다 새로운 개별 isolate를 만들어서 이를 처리하기 때문에 main isolate에 부담을 주지 않음. 기존의 isolate에 새로운 isolate가 만들어지며, 각각 할당된 메모리에서 각각 고유의 이벤트 루프를 갖게 됨. 하지만 기존 isolate에서 새로운 isolate에 접근할 수 없음. 그래서 이름이 isolate임. isolate들을 함께 작동시키는 방법은 메시지를 서로 주고 받게 하는 것임. 한 isolate에서 다른 isolate에게 메시지를 보내고, 메시지를 받은 isolate에서는 이벤트를 사용하여 메시지를 처리하는 것임.

이벤트 루프(Event Loop)

이벤트 루프는 Call Stack과 Callback Queue의 상태를 체크해 Call Stack이 빈 상태가 되면, Callback Queue의 첫 번째 콜백을 Call Stack으로 밀어넣는 것을 의미한다. 이런 반복적인 행동을 tick이라 부른다.

Flutter에서는 단일 스레드로 앱을 작동시키기 때문에 이벤트 루프가 중요하다.

Flutter에서의 이벤트루프는 이벤트 열에서 가장 오래된 이벤트를 처리하고, 그 다음 이벤트를 처리하는 식으로 작동된다. 이벤트 열이 비어질 때까지 이 작업을 반복하는 것이다. 이벤트 루프는 돌면서 한 번에 하나씩 이벤트를 처리하는 것임. 아무것도 처리하지 않을 때는 다음 이벤트가 들어올때까지 가만히 있음. 스레드가 가만히 있음.

'Flutter' 카테고리의 다른 글

Future  (0) 2021.04.02
A RenderFlex overflowed by ~ pixels on the bottom.  (0) 2021.02.17
Flutter 기본_ListView2  (0) 2021.02.15
Flutter 기본_ListView  (0) 2021.02.15
Flutter 기본_StatefulWidget 사용해보기  (0) 2021.02.15
Comments