2014-09-10 3 views
0

저는 이벤트 루프에 대해 많은 것을 읽었으며, I/O 요청을 만들 수 있도록 제공된 추상화를 이해합니다 (fs.readFile (foo.txt) 사용 가능)) 그리고 파일 읽기 완료를 나타내는 특정 이벤트가 발생하면 실행될 콜백 만 전달하면됩니다. node.js의 이벤트 루프 이해

그러나 실제로 이해할 수없는 부분은 실제로 파일을 읽는 작업을 수행하는 함수가 실행되고있는 부분입니다. Javascript는 단일 스레드지만, 한 번에 두 가지 일이 발생합니다. 즉, node.js 파일의 실행과 실제로 하드 드라이브에서 데이터를 읽는 일부 프로그램/함수가 있습니다. 이 두 번째 기능은 노드와 관련하여 어디에서 발생합니까?

답변

0

"물론 백엔드에는 DB 액세스 및 프로세스 실행을위한 스레드와 프로세스가 있지만이 코드는 명시 적으로 코드에 노출되어 있지 않으므로 내가/O 상호 작용 (예 : 데이터베이스 또는 다른 프로세스와의 상호 작용)은 해당 스레드의 결과가 이벤트 루프를 통해 코드로 리턴되기 때문에 각 요청의 관점에서 비동기 적입니다. Apache 모델과 비교할 때 스레드와 쓰레드 오버 헤드는 각 연결마다 쓰레드가 필요 없기 때문에 다른 어떤 것이 병렬로 실행 되어야만하고 심지어 Node.js에 의해 관리된다하더라도 " via http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/

-1

등을 사용하면 setTimeout(function(){/*file reading code here*/},1000);입니다. 자바 스크립트는 여러 가지를 나란히 놓고 실행할 수 있습니다. 세 개는 setInterval(function(){/*code to execute*/},1000);입니다. 그래서 JavaScript는 멀티 스레딩입니다. 그리고 실제로에서 읽기/또는 당신이 사용하는 경우, NodeJS에서, 하드 드라이브에 기록 :

var child=require("child_process"); 
function put_text(file,text){ 
    child.exec("echo "+text+">"+file); 
} 
function get_text(file){ 
//JQuery code for getting file contents here (i think) 
return JQueryResults; 
} 

이들은 또한 읽고 NodeJS를 사용하여 하드 드라이브로/쓰기에 사용할 수 있습니다.