JavaScript와 Kotlin의 비동기 처리

Yeon Seong Hwang·2024년 4월 20일
0
post-thumbnail

❓ "JavaScript의 event loop와 kotlin의 coroutine은 어떤 차이가 있어요?" 라는 질문을 받게 되었는데, 비슷한 개념인데 javascript는 single thread였던 것 같은데...까지만 생각이 나서 명쾌하게 답을 하지 못했다. 그래서 이번 기회에 정리해보기로 했다.

JavaScript의 Event Loop란?

JavaScript는 single thread로 동작한다. 즉, 한 번에 하나의 작업만 수행이 가능하다.
그럼 어떻게 동시성(concurrency)을 가질 수 있는걸까?

JavaScript 엔진을 구동하는 웹브라우저나 Node.JS와 같은 javascript runtime에서 Event Loop를 통한 비동기 방식으로 여러 요청들을 처리할 수 있다.

💡 Event Loop는 현재 처리해야 할 작업들이 있는지 계속해서 확인하고, 작업들이 처리될 수 있도록 task queue나 engine에 옮기는 녀석이다.

Kotlin의 coroutine은?

Kotlin에서 동시성 개념을 도입한 것이 coroutine이다. coroutine은 thread 위에서 실행된다. 즉, thread를 더 잘게 쪼개어 사용할 수 있는 개념이고, light-weight thread라고 부르기도 한다.
작업이 작다면 한 thread에서 수 천개의 coroutine이 작동할 수도 있는데, coroutine이 중단되거나 다른 thread에서 실행되기 위해 배치될 때 OS level의 context switching이 발생하지 않아서 저비용으로 실행될 수 있다.
Coroutines-dispatch

profile
SW Engineer

0개의 댓글