유튜브블로그Top 10
내 프로필

데브허브 안내
소개업데이트 소식

데브허브 커뮤니티

예제로 알아보는 Event Loop(Concurrency)

오디 - 평범한개발자

2025. 10. 28.

0

#backend
#mobile app
  • 다트의 동시성(Concurrency)은 이벤트 루프를 통해 구현되며, 비동기 함수의 스케줄링 및 실행 순서를 이해하는 데 핵심적인 역할을 합니다. 🔄
  • Future.value와 같이 즉시 완료되는 비동기 작업이나 await 이후의 코드는 마이크로태스크 큐(Microtask Queue)로 들어가며, 이는 일반 이벤트 큐(Event Queue)보다 높은 우선순위를 가집니다. ⚡
  • 동기 함수는 메인 아이솔레이터에서 즉시 실행되고, Future 생성자나 I/O 작업과 같은 일반적인 비동기 작업은 이벤트 큐에 스케줄링됩니다. 🚀
  • 첫 번째 예제에서 Task 1(동기), Task 3(동기), Task 2(마이크로태스크 큐) 순서로 실행되어, 마이크로태스크 큐가 동기 작업 직후에 처리됨을 보여줍니다. 🔢
  • await 키워드는 해당 비동기 함수의 실행을 일시 중지시키고, 기다리던 Future가 완료되면 await 이후의 모든 코드를 마이크로태스크 큐로 옮겨 연속적으로 실행되게 합니다. ⏸️
  • HTTP 요청과 같은 실제 비동기 네트워크 작업은 이벤트 큐에 들어가며, 응답이 도착하여 Future가 완료되면 .then 콜백이 마이크로태스크 큐로 이동하여 처리됩니다. 🌐
  • 이벤트 루프의 복잡한 동작을 완벽하게 예측할 필요는 없지만, 그 존재와 대략적인 스케줄링 순서를 이해하는 것은 미세한 실행 순서 제어가 필요할 때 중요합니다. 🤔
  • 마이크로태스크 큐는 이벤트 큐보다 먼저 비워지므로, await 이후의 작업이나 Future.value는 다음 이벤트 큐 작업보다 먼저 실행됩니다. ➡️

Recommanded Videos