2016-06-05 1 views

답변

1

저는 실제로 libv8이 "비공개"인 두 개의 비동기 요청을 어떻게 처리하는지 묻습니다. Javascript는 단일 스레드이므로 동일한 순간에 시작할 수 없습니다. 하나는 시작될 것이고 JS는 더 많은 것을 실행할 수 있고 두 번째 것은 시작할 수 있습니다. 그들은 동시에 "진행중"이 될 것입니다.

먼저 nodejs에서 사용되는 라이브러리는 일반적으로 libv8이 아니라 libuv라고합니다. 여기에 the doc for libuv입니다.

libuv가 수행하는 방법에 대한 대답은 비동기 작업의 유형에 따라 다릅니다. 여기에 libuv site에서도는 다음과 같습니다 libuv에서

enter image description here

디스크 I/O는 스레드 풀을 통해 원시 스레드를 사용합니다. 네이티브 스레드는 각 디스크 I/O 작업을 실행 한 다음 완료되면 nodejs 이벤트 대기열에 이벤트를 넣습니다. 그러면 nodejs를 사용할 수있을 때 이벤트 대기열에서 해당 이벤트를 가져오고 비동기 I에 등록 된 콜백을 호출 할 수 있습니다/O 작업. 이 기능은 원래 libeio에서 제공되었지만 지금은 자체적으로 구현 된 것입니다.

libuv의 네트워킹 작업은 epoll, kqueue 및 IOCP와 같은 원시 OS 비동기 기능을 사용합니다.

+0

감사합니다. 예, 저는 플랫폼이 처음입니다. –

1

기술적으로 당신은 요청을 병렬로 만들지 않습니다. 그 중 하나가 먼저 시작되지만, 끝나면 하나를 청취하고, 다른 하나는 처음으로 끝날 때까지 앞뒤로 청취합니다.

+0

ans @ Johnathan Ralls를 주셔서 감사합니다. 나는 같은 것을 기대합니다. 하나씩 취합니다. 그러나 나는 한 남자에게서 들었습니다. 나는 그 당시에 완전히 이해하지 못했다. –

관련 문제