Isolate가 뭔지 알아보자.
프로세스란 하나의 프로그램을 말한다. 이 프로그램 안에는 여러 가지 작업 단위가 있을 텐데, 그 각각의 단위를 스레드라고 부른다.
여기서 중요한 것은 멀티 스레드 환경이라도 모든 스레드는 하나의 메모리(in 프로세스)를 공유한다는 점이다.
그러면 isolate 는 뭐가 다를까?
Isolate 는 독립적인 작업 단위이다.
이걸 쓰는 이유는 플러터가 싱글 스레드로 동작하기 때문이다.
하나의 스레드에서 작업을 순차로 처리하는데 중간에 시간이 오래 걸리는 이벤트가 발생하면 모든 작업이 밀려 멈춘다. 만약 애니메이션을 실행중이었다면 애니메이션에 중간에 멈추는 참사가 일어난다...이 때 Isolate 를 쓴다.
Isolate 는 스레드와 다르게 각각 메모리를 할당받는다.
따라서 UI를 나타내는 Isolate와 이벤트를 처리하는 Isolate를 따로 두면 싱글 스레드 프로세스에서도 여러 작업을 딜레이 없이 처리해 앱 성능을 개선할 수 있다.
그러면 Flutter에서 Isolate를 활용하는 법을 알아보자.
SendPort 와 ReceivePort 로 Isolate 객체 사이에서 통신한다.SendPort.sendReceivePort.listenReceivePort.close()따로 SendPort 와 ReceivePort 를 선언하지 않아도 함수 자체에 내장되어있다.
compute 함수에 파라미터로 정의한 함수를 넣는다.compute(함수, 함수에 넣을 파라미터)