Heim >Backend-Entwicklung >Golang >Was ist der Unterschied zwischen Goroutine und Coroutine?
Unterschied: 1. Goroutine kommuniziert über Kanäle und Coroutine kommuniziert über Ertrags- und Wiederherstellungsvorgänge. 2. Goroutine-Coroutinen sind nicht vollständig synchronisiert und können mit mehreren Kernen parallel ausgeführt werden. Coroutine-Coroutinen sind vollständig synchronisiert und können nicht parallel ausgeführt werden. 3. Goroutine kann zwischen mehreren Coroutinen/Threads wechseln; Coroutine läuft in einem Thread. 4. Die Anwendung belegt über einen längeren Zeitraum eine große Menge an CPU. Benutzer in Goroutine haben das Recht, diese Aufgabe zu beenden, Coroutine jedoch nicht.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, GO Version 1.18, Dell G3-Computer.
Die Sprachen C#, Lua und Python unterstützen alle die Coroutine-Funktion. Coroutine und Goroutine haben einen ähnlichen Namen. Beide können Funktionen oder Anweisungen in einer unabhängigen Umgebung ausführen, es gibt jedoch zwei Unterschiede zwischen ihnen:
Goroutine kann parallel ausgeführt werden
Coroutine wird jedoch immer sequentiell ausgeführt.
Goroutinen bedeuten parallel (oder können parallel eingesetzt werden), Coroutinen sind im Allgemeinen nicht so, Goroutinen kommunizieren über Kanäle; Coroutinen zu Goroutinen.
Im engeren Sinne kann Goroutine in einer Multithread-Umgebung auftreten, und Goroutine kann sich nicht selbst steuern, um Unterstützung mit hoher Priorität zu erhalten; Coroutine tritt immer in einem einzelnen Thread auf, und das Coroutine-Programm muss die Kontrolle aktiv vor dem Host übergeben kann die Kontrolle erlangen und die Kontrolle übertragen. Übergeben Sie sie an andere Coroutinen.
Die Kanalkommunikation wird zwischen Goroutinen verwendet, und Coroutinen verwenden Yield- und Resume-Vorgänge.
Die Konzepte und Betriebsmechanismen von Goroutine und Coroutine stammen aus frühen Betriebssystemen.
Der Laufmechanismus von Coroutine ist die kollaborative Aufgabenverarbeitung. Frühe Betriebssysteme erforderten, dass jede Anwendung die Aufgabenverarbeitungsregeln des Betriebssystems einhalten muss. Wenn die Anwendung die CPU nicht verwenden muss, wird sie die CPU-Auslastung aktiv übergeben Rechte. Wenn ein Entwickler versehentlich oder absichtlich zulässt, dass eine Anwendung die CPU längere Zeit belegt, kann das Betriebssystem nichts dagegen tun, und die Folge ist, dass der Computer leicht nicht mehr reagiert oder einfriert.
goroutine ist eine präventive Aufgabenverarbeitung, die der bestehenden Multithread- und Multiprozess-Aufgabenverarbeitung sehr ähnlich ist. Die Steuerung der CPU durch die Anwendung muss letztendlich vom Betriebssystem verwaltet werden. Wenn das Betriebssystem feststellt, dass eine Anwendung über einen längeren Zeitraum eine große Menge an CPU belegt, hat der Benutzer das Recht, die Aufgabe zu beenden. Zusammenfassung der Unterschiede zwischen
Coroutine und Goroutine. Unterschied 1:
Goroutine kommuniziert über KanäleGoroutine Coroutinen sind nicht vollständig synchronisiert und können unter Verwendung mehrerer Kerne parallel ausgeführt werden.
Coroutinen sind vollständig synchronisiert und werden nicht parallel ausgeführt.
goroutine kann sein Mehrere Coroutinen schalten mehrere Threads ein, wodurch nicht nur mehrere Kerne verwendet werden können, sondern auch der Umschaltaufwand reduziert wird.
coroutine läuft nur in einem Thread, läuft nur in einem Thread
Unterschied vier:
goroutine-Betriebssystem Wenn festgestellt wird, dass eine Anwendung über einen längeren Zeitraum eine große Menge an CPU beansprucht, dann wird die Der Benutzer hat das Recht, diese Aufgabe zu beenden.
coroutine Wenn ein Entwickler versehentlich oder absichtlich zulässt, dass eine Anwendung die CPU für längere Zeit belegt, kann das Betriebssystem nichts dagegen tun. Die Folge ist, dass der Computer leicht nicht mehr reagiert oder abstürzt.
【Verwandte Empfehlungen:
Go-Video-Tutorial】
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Goroutine und Coroutine?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!