Libuv uv_run()

Creator
Creator
Seonglae ChoSeonglae Cho
Created
Created
2020 Nov 24 7:40
Editor
Edited
Edited
2021 Apr 23 5:55
Refs
Refs
Language
Language

이벤트 루프는 하나의 쓰레드로 동작

이벤트루프를 만들어 주는 코드
코드가 어떻게 동작 되는지가 아니라 어떤 순으로 실행되고 있는지
해당 코드가 while()로 동작합니다. 바로 해당 부분이 이벤트루프
libuv는 비동기 형태로 동작하기 위해 내부적으로 쓰레드풀 가짐
동기작업을 수행할 때 쓰레드에게 작업 위임을 하고 코드 제어권을 넘겨주는 역할
 
timers -> pending callbacks -> idle, prepare -> poll -> check -> close callbacks 순으로 호출
이때 별도로 관리되는 nestTickQueue와 microTaskQueue
각각을 phase라고 한다
 
 
ibuv는 시스템 API나 쓰레드 풀에게 작업을 비동기 형태로 전달한 후 콜백을 큐들에 저장한다고 했는데 거기서 말한 큐들이
timers, pending callbacks, idle/prepare, poll, check, close callbacks, nestTickQueue, microTaskQueue
우리가 등록한 콜백은 성격에 따라 유형에 맞는 큐에 등록
그리고 이벤트 루프가 돌면서 각 큐에 포함된 콜백을 가져와 실행
 
 
 
 
 
 

Recommendations