Dart 비동기 스레드 개념

Ruinak·2021년 9월 23일
0

Dart

목록 보기
10/11
post-thumbnail

Dart의 비동기

  • Dart는 단일 스레드를 사용합니다.
  • 비동기는 일의 순서가 없습니다.
  • 비동기를 사용하면 비동기 처리가 어렵습니다.
  • 결과 부분을 그리는데 5초가 소요되므로 사용자는 대기시간이 발생합니다.
  • 이 간극을 줄이기 위해 결과부분을 요청해놓고 먼저 그릴수 있는 검정색 그림을 응답이 오기를 기다리는 동안 그리는 것입니다.

스레드

  • 스레드를 Time Slicing이라 합니다.
  • Time Slicing은 시간을 자르는 것입니다.
  • 위 그림에서 벽을 색칠할 때 동시에 색칠하는 방법이 있습니다.
  • 위 그림은 1초라는 시간을 Slicing해서 빨간색과 노란색을 왔다갔다(붓을 바꾸면)하면서 색칠하 것입니다.
  • 1초라는 시간이 아니라 0.000001초에 한번씩 색칠하면 동시에 색칠하는 것처럼 보이게 됩니다.
  • 붓을 바꾸는 시간을 Context Switching이라고 합니다.
  • 스레드는 UX를 좋게하므로, 사용자는 동시에 색칠하는 것처럼 느껴지게 됩니다.

  • 그림을 그리는 것에는 순서가 있습니다.
  • 순서를 지키지 않으면 위 그림처럼 비행기 위에 집을 그릴 수도 있습니다.
  • 애플리케이션에서는 그림 그리는 스레드는 1개입니다.

Promise(Future)

  • Dart는 단일 스레드를 사용합니다.
  • Dart는 main( )이 실행되는데 이 main은 스택입니다.
  • 하드 디스크에 기록(I/O)을 하거나 Network에 연결하는 것은 시간이 오래 걸립니다.
  • 시간이 오래걸려서 CPU가 놀게되면 Black이 걸립니다.
  • Dart는 이벤트루프를 이용해서 비동기를 처리합니다.
profile
Nil Desperandum <절대 절망하지 마라>

0개의 댓글