LIBUV utilizza le chiamate del file system di blocco internamente - perché?Come?
-
21-12-2019 - |
Domanda
Ho appena imparato che Node.js Crown Jewel libuv use
- .
- Perché non utilizza le chiamate di filesystem non bloccanti come fa per il networking?
- Se ci sono un milione di retti di file eccezionali, probabilmente non lancia un milione di discussioni ... cosa fa libuv ??
Soluzione 2
- .
-
The STUSS API non bloccante non può essere utilizzato, poiché O_nonblock e gli amici non funzionano su file regolari!Per Linux AIO è disponibile, ma ha le sue stranezze (cioè dipende dal filesystem, gira il blocco in silenzio per alcune operazioni).
-
Non ho idea.
Altri suggerimenti
- .
-
La maggior probabilità di supportare operazioni sincroni come
fs.renameSync()
vsfs.rename()
. -
Utilizza un pool di thread, come spiegato nella "NOTA " sul link che ti ha detto.
.
[...] Ma invocare queste funzioni in un pool di filettatura e notifica agli osservatori registrati con il loop evento quando è richiesta l'interazione dell'applicazione.
Quindi, crea un numero limitato di fili e li riutilizza mentre diventano disponibili.
Inoltre, per quanto riguarda la quip di " crown jewel :" node.js e libuv non sono magie.Sono buoni strumenti per avere a tua disposizione, ma certamente hanno i loro limiti.
Però, l'iperbole di " un milione di file legge " sarebbe un tratto per qualsiasi piattaforma da gestire senza vincoli.