Können Zip- und Unzip-Vorgänge in NodeJS als Multithread ausgeführt werden?
Ja.
... und Sie können nicht mehrere Threads selbst starten ... da jede Zip-Datei in einem einzigen Thread behandelt werden muss
Ich vermute, Ihre Prämisse ist fehlerhaft. Warum genau kann ein Knotenprozess Ihrer Meinung nach nicht mehrere Threads starten? Hier ist eine App, die ich ausführe und die das sehr ausgereifte Clustermodul node.js mit einem übergeordneten Prozess als Supervisor und zwei untergeordneten Prozessen verwendet, die stark netzwerk- und festplatten-E / A-gebundene Aufgaben ausführen.
Wie Sie in der sehen können C
Spalte sehen können, wird jeder Prozess in einem separaten Thread ausgeführt. Auf diese Weise reagiert der Master-Prozess weiterhin auf Befehls- und Steuerungsaufgaben (wie das Laichen / Ernten von Workern), während die Worker-Prozesse CPU- oder festplattengebunden sind. Dieser bestimmte Server akzeptiert Dateien aus dem Netzwerk, dekomprimiert sie manchmal und speist sie über externe Dateiprozessoren. IOW, es ist eine Aufgabe, die die von Ihnen beschriebene Komprimierung umfasst.
Ich bin nicht sicher, ob Sie Worker-Threads verwenden möchten, die auf diesem Snippet aus den Dokumenten basieren :
Worker (Threads) sind nützlich, um CPU-intensive JavaScript-Operationen auszuführen. Sie werden bei E / A-intensiver Arbeit nicht viel helfen. Die in Node.js integrierten asynchronen E / A-Vorgänge sind effizienter als Workers.
Für mich schreit diese Beschreibung: "crypo!" In der Vergangenheit habe ich untergeordnete Prozesse erzeugt, wenn teure Crypo-Operationen ausgeführt werden müssen.
In einem anderen Projekt verwende ich das child_process- Modul des Knotens und starte jedes Mal einen neuen untergeordneten Prozess, wenn ich einen Stapel von Dateien zum Komprimieren habe. Dieser bestimmte Dienst sieht eine Liste von ~ 400 Dateien mit Namen wie process-me-2019.11.DD.MM
und verkettet sie zu einer einzigen process-me-2019-11-DD
Datei. Das Komprimieren dauert eine Weile, sodass beim Blockieren eines neuen Prozesses das Blockieren des Hauptthreads vermieden wird.