- 我已經瞭解到,Node.js的使用libeio內部執行異步文件 I/O,以線程池,在* nix平臺,是嗎?
- 異步網絡 I/O?它是由libev完成的嗎?是否還有線程池?
- 如果裏面有線程池,它怎麼比傳統的單線程每請求模型更有效率?並且它是每個I/O請求的一個線程?
- 什麼是Windows的機制?我知道它是由IOCP完成的,並且有一個內核級線程池,對吧?
- 爲什麼linux沒有像Windows IOCP那樣的本地完全AIO機制呢?將來會有嗎?
根據長常的回答更新:關於Node.js的困惑內部異步I/O機制
- 我參加了一個快速查看在給@changchang的source code,發現默認的線程池的大小可以通過UV_THREADPOOL_SIZE被重置,我想知道在這種情況下這將被使用?
- 我還發現getaddrinfo使用這個線程池,除了fs之外還有更多嗎?如果所有同步作業都將在此線程池中完成,那麼缺省大小'4'是否足夠?
- 按照我現在的理解,node.js過程中將會有6個基本線程:1個V8線程(事件循環,其中用戶JavaScript代碼運行),1個libuv事件循環,以及線程池中的4個,對嗎?
我如何在我的shell(Ubuntu)中看到這些線程?我使用ps -eLf | grep節點|的grep -v grep的只看到有兩個:
根16148 7492 16148 0 2 20點43分/ 26 00:00:00 ./bin/node /home/aaron/workspace/test.js
根16148 7492 16149 0 2 20點43分/ 26 00:00:00 ./bin/node /home/aaron/workspace/test.js
看到這裏http://stackoverflow.com/questions/10680601/nodejs-event-loop – user568109 2013-03-20 15:20:29
node.js的實際使用[libuv(https://github.com/joyent/libuv/)抽象所有支持平臺的異步IO – Milan 2013-03-20 15:23:12
@ user568109我已經閱讀過,但不能直接從中得到答案,實際上,不清楚的表達會讓我更加困惑。它提到libeio'異步執行輸入輸出'(包括套接字),我對此表示懷疑。我從某個地方瞭解到這一點:因爲不能在普通文件上使用epoll,所以這裏來解放執行線程的aio。 – 2013-03-21 00:58:37