2016-06-05 5 views
0

Wie Javascript ist ein single-threaded, wie libuv behandelt, wenn es mir gelingt, zwei Anfragen parallel zu machen? ZB: Array von Versprechen machen und letzteres lösenWas passiert in libuv, wenn Sie parallele Anfragen machen

+0

Sie sind auch auf der OS-Ebene asynchron. Es ist besser, hier von * gleichzeitigen * Anfragen zu sprechen, nicht von "parallelen". – Bergi

+0

Danke @Bergi für das richtige setzen –

Antwort

1

Ich vermute, was Sie wirklich fragen ist, wie libv8 zwei asynchrone Anfragen, die "im Flug" zur gleichen Zeit sind, behandelt. Da es sich bei Javascript um einen einzelnen Thread handelt, können Sie sie nicht gleichzeitig starten. Einer wird gestartet, dann kann Ihr JS mehr starten und den zweiten starten. Sie werden beide gleichzeitig "in Bearbeitung" sein.

Zunächst einmal wird die Bibliothek in Nodejs in der Regel libuv, nicht libv8 genannt. Hier ist the doc for libuv.

Die Antwort für libuv ist, dass es von der Art der asynchronen Operation abhängt. Hier ist ein Diagramm, aus dem libuv site:

enter image description here

Disk I/O in libuv verwendet native Threads über einen Thread-Pool. Ein systemeigener Thread führt jede Datenträger-E/A-Operation aus und schließt sie ab. Anschließend fügt er ein Ereignis in die Ereigniswarteschlange von nodejs ein. Wenn nodejs verfügbar ist, kann er dieses Ereignis aus der Ereigniswarteschlange abrufen und den für das asynchrone I registrierten Rückruf aufrufen/O-Betrieb. Diese Funktionalität stammt ursprünglich aus libeo, ist aber augenscheinlich eine eigene Implementierung.

Netzwerkoperationen in libuv verwenden native OS async-Funktionen wie epoll, kqueue und IOCP.

+0

Danke, das habe ich getan. Ja, ich bin neu auf der Plattform –

1

technisch machen Sie die Anfrage nicht parallel, man kommt zuerst. dieser beginnt zuerst, aber er hört ab oder sucht nach einem, wenn es fertig ist, und dann nach dem anderen und vor und zurück, bis einer zuerst fertig ist.

+0

Danke für Ihre Antwort @Johnathan Ralls, ich erwartete das gleiche, es dauert eins nach dem anderen. aber ich habe von einem Typen gehört, als er etwas mit Spawn gemacht hat. Ich habe damals nicht ganz verstanden. –

Verwandte Themen