Ich verstehe bereits, dass Forking und Joining für Multithreading verwendet werden, aber ich verstehe nicht, was genau passiert, wenn eine Aufgabe gegabelt wird. Führt die Verzweigung einer Aufgabe dazu, dass die gespaltene Task an den Anfang der Berechnungsmethode zurückkehrt? Oder macht die Aufgabe etwas anderes? Wenn ich möchte, dass eine Aufgabe zu einer anderen Methode als der Berechnung springt und diese bei der Verzweigung ausführt, wie würde ich dann sagen, dass sie das tun soll? Gibt es eine Art von Erweiterung zu (instance).fork();
, die ich angeben kann, um dies zu spezifizieren?Was genau passiert, wenn eine Aufgabe gegabelt wird?
0
A
Antwort
0
Die Task, die das Fork/Join-Framework verwendet, ruft split
rekursiv in kleinere Unteraufgaben auf, sodass sie gleichzeitig ausgeführt werden können. Durch Abzweigung kann jede Teilaufgabe von einer anderen CPU parallel oder von verschiedenen Threads auf derselben CPU ausgeführt werden. Nachdem die Ausführung aller Unteraufgaben beendet ist, beginnt der join
-Teil. In diesem Prozess werden die Ergebnisse aller Unteraufgaben rekursiv zu einem einzigen Ergebnis zusammengefasst. Dieser ganze Prozess geschieht "hinter den Kulissen" und kann mit einem Thread-Pool namens ForkJoinPool
implementiert werden, der Threads vom Typ ForkJoinWorkerThread
verwaltet.
Verwandte Themen
- 1. was genau passiert, wenn `enableProdMode()`
- 2. Was passiert, wenn auf eine bereits abgeschlossene Aufgabe gewartet wird?
- 3. Was passiert, wenn ein Prozess gespalten wird?
- 4. Was passiert genau in AngularJS, wenn die Seite aktualisiert wird?
- 5. Was passiert, wenn eine App übersendet wird?
- 6. Was passiert, wenn ich auf eine Aufgabe warte, die bereits ausgeführt wird oder ausgeführt wird?
- 7. Was passiert genau, wenn const auf ein lokales Objekt verweist?
- 8. Was passiert genau, wenn Sie ein Backbone-Modell speichern?
- 9. Was genau passiert, wenn das Tombstone-Limit erreicht ist
- 10. Was genau passiert, wenn Go mehrere Werte zurückgibt
- 11. Python ist super(), was genau passiert?
- 12. Was genau passiert mit dieser Bild URL
- 13. Was passiert, wenn ein Ereignis ausgelöst wird
- 14. Was passiert, wenn dieser Code ausgeführt wird?
- 15. Was passiert, wenn ein Servlet angefordert wird?
- 16. Was passiert, wenn das System ausgeschaltet ist, wenn in rufus-scheduler eine Aufgabe geplant ist?
- 17. Was passiert, wenn veröffentlicht
- 18. Was passiert, wenn eine Scala "Future" Müll gesammelt wird?
- 19. Was passiert mit Einschränkungen, wenn eine Ansicht entfernt wird
- 20. Was passiert, wenn eine Nachricht in MQ zurückgesetzt wird?
- 21. Was passiert, wenn eine neue Instanz eines Objekts aufgerufen wird?
- 22. Was passiert, wenn eine einzelne Instanz einer Klasse auf eine Aufgabe wartet?
- 23. Was passiert, wenn ich eine Ausnahme erstelle?
- 24. Was passiert, wenn wir eine Webseite aktualisieren?
- 25. Was passiert, wenn eine JSP Ausführung beendet?
- 26. Was passiert, wenn make_shared
- 27. Was passiert, wenn ich eine AliasProperty anbinde?
- 28. MongoDB C# -Treiber: Was passiert genau, wenn ich eine Abfrage durchführe?
- 29. Was passiert eigentlich, wenn ApplicationCommands.Close
- 30. Was passiert, wenn Kernel delayed_work
Was passiert mit diesen Teilaufgaben, wenn die Aufgabe verzweigt ist? Beginnen sie sofort damit, eine andere Funktion auszuführen, oder müssen sie dazu aufgefordert werden, irgendetwas mit ihnen zu tun? Kannst du etwas ausführlicher erklären? – JKristol
Bitte sehen Sie meine aktualisierte Antwort oben. –
Können Sie ein Beispiel geben, wie diese einzelnen Threads ausgeführt werden können? Das verstehe ich noch nicht ganz. Ich versuche herauszufinden, wo im Code die gegabelten Threads liegen. Ich bin mir nicht sicher, ob die gegabelten Threads die Berechnungsmethode erneut starten oder ob sie solange untätig bleiben, bis sie aufgerufen werden. – JKristol