uv poll phase

Creator
Creator
Seonglae ChoSeonglae Cho
Created
Created
2020 Nov 24 7:53
Editor
Edited
Edited
2021 Apr 23 5:26
Refs
Refs
 
setTimeout, setInterval, setimmediate로 등록한 콜백을 제외한 대부분이 여기서 처리
 
해당 큐가 비어있지 않다면, 작업을 순차적으로 처리.
비어있다면, 즉시 다음 페이즈로 넘어가지 않가 일정시간 대기. 이때 대기하는 시간은 타이머 페이즈에서 실행할 작업이 있는지 검사후 있다면 넘어간다.
 
해당 페이즈가 관리하는 큐 이름은 watcher_queue이며, 검사하는 큐는 check_queue, pending_queue, close_callbacks_queue임 이름만 봐도 어디서 관리되는 큐인지 알 수 있음
 
 
[node.js] node.js의 이벤트루프와 libuv의 이해
각각은 별도로 큐를 이용하여 작업 리스트를 가지고 있습니다. 앞에서 libuv는 시스템 API나 쓰레드 풀에게 작업을 비동기 형태로 전달한 후 콜백을 큐에 저장한다고 했는데 여기서 말한 큐가 timers, pending callbacks, idle/prepare, poll, check, close callbacks, nestTickQueue, microTaskQueue 큐입니다. 우리가 등록한 큐는 성격에 따라 유형에 맞는 큐에 등록됩니다.
[node.js] node.js의 이벤트루프와 libuv의 이해
fs.readFile은 poll phase에서 콜백이 실행되고 setimeout과 setImmediate의 콜백은 이때 이벤트루프에 있는 큐에 등록되는데 setimmediate는 check phase에 등록하면서 현재 poll phase의 다음 단계가 check phase이기 때문에 setImmediate()의 콜백 작업이 먼저 실행

Recommendations