-
Pertama-tama,
libuvtelah menghapuslibeiodari itu. Tapi itu melakukan async file I/O dengan kumpulan utas sepertilibeioseperti yang Anda sebutkan. -
libuvjuga menghapuslibev. Itu melakukan I/O jaringan async berdasarkan antarmuka I/O async di berbagai platform, sepertiepoll,kqueuedanIOCP, tanpa kumpulan utas. Ada loop peristiwa yang berjalan di utas utamauvyang mengumpulkan kejadian I/O dan memprosesnya. -
Kumpulan utas di dalam
libuvadalah kumpulan utas ukuran tetap (4 dalam sistem seperti uinx). Itu melakukan peran antrian tugas dan menghindari kelelahan sumber daya sistem dengan menghasilkan utas tanpa batas ketika permintaan meningkat.
Hingga versi 0.6 node menggunakan libev untuk menjalankan event-loop dan libeio untuk I/O asinkron, (backend Unix sangat bergantung pada dua pustaka ini). Tapi libuv telah mulai mengganti libev dan libeio dalam versi 0.8. Itu melakukan, mempertahankan, dan mengelola semua io dan acara di kumpulan acara. libuv adalah pilihan di pustaka IO asinkron lintas platform.
- Ya, hingga node 0.6, tidak digunakan lagi di 0.8 dan menggunakan kumpulan thread
-
Ya, tapi
libevtidak menggunakan kumpulan utas. Lihat di siniKlarifikasi :Menurut tautan dalam pertanyaan yang saya posting,
libeiotidak mendukung semua fungsi POSIX yang berhubungan dengan I/O (termasuk soket). Tetapi penulis simpul memutuskan untuk menggunakannya hanya untuk I/O file asinkron, dan menggunakanlibevuntuk I/O jaringan. Saya tidak tahu dari mana Anda mendengarnya tetapi Anda dapat menggunakan epoll pada file biasa. -
libevmenggunakan event loop jadi tidak ada masalah di sini. - Ya, IOCP menangani async I/O di windows, kernel memang menggunakan kumpulan utas.
- Kernel linux baru memiliki epoll, kqueue di kernel BSD baru.
libevdanlibeioadalah untuk lingkungan linux dan menyediakan event loop/async IO untuk semua kernel (mendukung pemilihan, polling, epoll, kqueue).
Perbarui pertanyaan:
- tidak tahu banyak tentang
libuv - mungkin cukup (tidak tahu)
-
Inilah temuan saya di Windows 8, memeriksanya melalui Process Explorer. Menampilkan 4 utas, 1 DLL, 1 File, dan 1 Bagian (total 7 entri) untuk proses aplikasi node.
-
ps -eLfmemang menampilkan semua utas dan proses, mungkin Anda memfilternya secara berlebihan, cari saja pid proses node sepertips -eLf | grep xdi mana x adalah pid untuk proses node.