왜 ‘동시에 처리하는 것’처럼 보일까? Flutter Concurrency
- 다트의 동시성(Concurrency)은 여러 작업을 동시에 수행하는 개념으로, 병렬 실행과 유사하게 느껴집니다. 🚀
- CPU는 물리적 코어로 실제 병렬 처리를 가능하게 하며, 스레드는 논리적 연산 단위로, 빠른 전환을 통해 동시 처리처럼 보이게 합니다. 🧠
- 다트는 자체 코드 실행에 하나의 스레드만 사용하는 '싱글 스레드' 언어이며, 이는 안정성 확보에 기여합니다. 🧵
- 다트의 동시성은 '이벤트 루프'라는 핵심 메커니즘을 통해 구현됩니다. 🔄
- I/O 작업(네트워크, 파일 등)은 OS에 위임하여 OS가 다른 스레드를 활용하도록 합니다. 📤
- 필요에 따라 '아이솔레이트(Isolates)'를 사용하여 다트에서도 여러 스레드를 활용할 수 있습니다. 🌐
- 이벤트 루프는 '큐(Queue)'라는 선입선출(FIFO) 데이터 구조를 활용하여 작업을 스케줄링합니다. ⏳
- 큐는 태스크를 '인큐(enqueue)'하고 '디큐(dequeue)'하는 방식으로, 먼저 들어온 태스크가 먼저 처리됩니다. 🚶