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

Isolate vs Thread 본문

Flutter

Isolate vs Thread

flutter 개발하자 2021. 5. 26. 10:36

Thread

스레드는 독립적인 프로세스로 고유의 메모리를 갖고 있으며, 해당 메모리에서 작업을 실행한다. 

또한 다른 스레드와 동시에 작업을 할 수 있다.

 여기서 주목할 부분은 c나 java등의 언어에서 thread는 HeapMemory를 공유한다는 점이다.

HeapMemory

프로그래머가 원할 때, 원하는 만큼 메모리를 할당받아와 사용하고 원할 때 반납(해제)가능한 메모리

 - compiler나 cpu가 자동을로 메모리를 관리 하지않음

 - 컴퓨터에 남아있는 메모리만큼 사용 가능

 - 호출이 끝난다고 사라지지않음(반납(해제)해야 사라짐)

 

다시 돌아와서 

c나 java등의 언어의 thread는 HeapMemory를 공유한다고 했다.

즉, 동일한 메모리에서 Main thread와 다른 thread 들이 있는 것이다. 여기서 thread를 만들면, 동일한 메모리에서 해당 thread에게 메모리를 할당해주는 것이다.

 

Isolate

Isolate는 각각의 메모리를 갖고 독립적으로작업한다. 

-> 이러면 thread와 동일한 것처럼 보이지만, 여기서 다른 점은 isolate는 동일한 메모리에서 할당 받은 메모리가 아니다. 다. Thread는 동일한 곳에서 온 메모리들이지만, Isolate는 다 다른 곳에서 온 메모리들이란 소리다. 그렇기 때문에 이름이 Isolate가 된 것이다.

 

 

Isolate의 특징

- 단일 스레드가 이벤트 루프를 실행한다. -> 메모리가 변형되지 않는다.

- Isolate안에 스레드가 메모리를 가진 채로 있고, 스레드는 이벤트만 처리한다. 

    -> 즉, isolate는 각각 고유 이벤트 루프가 있음.

- Isolate의 메모리 할당이나 가비지 컬렉션은 잠금을 필요로 하지 않는다.

- Isolate를 함께 작업시키기 위해서는 isolate간에 메세지를 주고 받는 방법밖에 없다.

EventLoop

이벤트 루프란 이벤트열의 가장 오래된 이벤트를 처리하고, 그 다음 오래된 이벤트를 처리하는 식으로 이벤트열의 모든 이벤트를 처리하는 것을 의미한다.

 - 앱은 시작과 끝 사이에 수많은 이벤트가 있다. 예를 들어, Disk I/O나 사용자가 손까락으로 탭을 하는 등의 이벤트가 있을 수 있다. -> 앱은 이런 이벤트가 어떤 순서로 일어날치 예측할 수 없다. -> 그렇기 때문에 이벤트 루프가 계속해서 돌면서 이벤트 열에 이벤트가 들어오면 하나씩 처리하는 것이다.

 - 이벤트가 없으면 이벤트루프는 다음 이벤트가 생기기전까지 기다린다.

'Flutter' 카테고리의 다른 글

Isolate 사용방법  (0) 2021.05.31
MethodChannel  (0) 2021.05.26
Factory  (0) 2021.05.24
Flutter _ Retrofit  (0) 2021.05.24
위젯) SingleChildScrollView  (0) 2021.05.11
Comments