-
Prima di tutto,
libuvha rimosso illibeioda. Ma esegue l'I/O di file asincrono con un pool di thread comelibeioproprio come hai detto. -
libuvrimuove anchelibev. Esegue l'I/O di rete asincrono in base alle interfacce I/O asincrone in diverse piattaforme, comeepoll,kqueueeIOCP, senza pool di thread. C'è un ciclo di eventi che gira sul thread principale diuvche 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
libevnon utilizza il pool di thread. Vedi quiChiarimento:secondo il link nella domanda che ho postato,
libeiosupporta 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 usalibevper I/O di rete. Non so da dove l'hai sentito ma puoi usare epoll su file normali. -
libevutilizza 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.
libevelibeiowere 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 -eLfmostra tutti i thread e i processi, forse lo stai filtrando eccessivamente, cerca solo il pid del processo del nodo comeps -eLf | grep xdove x è il pid per il processo del nodo.