-
Prima di tutto,
libuv
ha rimosso illibeio
da. Ma esegue l'I/O di file asincrono con un pool di thread comelibeio
proprio come hai detto. -
libuv
rimuove anchelibev
. Esegue l'I/O di rete asincrono in base alle interfacce I/O asincrone in diverse piattaforme, comeepoll
,kqueue
eIOCP
, senza pool di thread. C'è un ciclo di eventi che gira sul thread principale diuv
che esegue il polling degli eventi di I/O e li elabora. -
Il pool di thread all'interno di
libuv
è un pool di thread di dimensioni fisse (4 in un sistema simile a uinx). Svolge un ruolo di coda delle attività ed evita l'esaurimento delle risorse di sistema generando thread a tempo indeterminato quando le richieste aumentano.
Fino alla versione 0.6 il nodo usava libev
per eseguire event-loop e libeio
per l'I/O asincrono, (il backend Unix poggia pesantemente su queste due librerie). Ma libuv
ha iniziato a sostituire libev
e libeio
nella versione 0.8. Esegue, mantiene e gestisce tutti gli io e gli eventi nel pool di eventi. libuv
è la scelta nelle librerie IO asincrone multipiattaforma.
- Sì, fino al nodo 0.6, deprecato in 0.8 e utilizza il pool di thread
-
Sì, ma
libev
non utilizza il pool di thread. Vedi quiChiarimento:secondo il link nella domanda che ho postato,
libeio
supporta tutte le funzioni POSIX che si occupano di I/O (che include il socket). Ma l'autore del nodo ha deciso di usarlo solo per I/O di file asincroni e usalibev
per I/O di rete. Non so da dove l'hai sentito ma puoi usare epoll su file normali. -
libev
utilizza il ciclo di eventi quindi nessun problema qui. - Sì IOCP gestisce l'I/O asincrono in Windows, il kernel utilizza pool di thread.
- Il nuovo kernel Linux ha epoll, kqueue nel nuovo kernel BSD.
libev
elibeio
were per l'ambiente linux e fornisce loop eventi/async IO per tutti i kernel (supporta select, poll, epoll, kqueue).
Aggiorna domande:
- non so molto su
libuv
- forse abbastanza (non lo so)
-
Ecco i miei risultati su Windows 8, verificati tramite Process Explorer. Mostrati 4 thread, 1 DLL, 1 file e 1 sezione (totale 7 voci) per un processo di applicazione del nodo.
-
ps -eLf
mostra tutti i thread e i processi, forse lo stai filtrando eccessivamente, cerca solo il pid del processo del nodo comeps -eLf | grep x
dove x è il pid per il processo del nodo.