Der Unterschied zwischen Coroutinen und Threads in Golang
Im Allgemeinen sind Coroutinen wie leichte Threads.
Threads haben im Allgemeinen einen festen Stapel und eine feste Größe. Um Ressourcenverschwendung (oder Ressourcenmangel) zu vermeiden, verfolgen Goroutinen eine dynamische Expansions- und Kontraktionsstrategie: Die anfängliche Menge beträgt 2.000 und die maximale Menge kann auf 1 G erweitert werden.
Jeder Thread hat eine ID, die beim Erstellen des Threads zurückgegeben wird, sodass wir den Thread über die Thread-ID manipulieren können. Da es in Golang jedoch kein solches Konzept gibt, müssen wir die Erstellung und Veröffentlichung von Coroutinen zu Beginn der Codierung in Betracht ziehen.
In Bezug auf den Planungsaufwand für den Thread- und Goroutine-Wechsel
In Bezug auf den Thread-/Goroutine-Wechselaufwand ist Goroutine weitaus kleiner als Threads
Thread: beinhaltet Moduswechsel (Wechsel). vom Benutzermodus zum Kernelmodus), 16 Register, PC, SP... und andere Registeraktualisierungen usw.
Da die Coroutine vom Coroutine-Scheduler im Benutzermodus abgeschlossen wird und nicht im Kernel eingeschlossen werden muss, sind die Kosten gering.
Also Goroutine: nur drei Registerwertänderungen – PC/SP/DX.
Verwandte Empfehlungen: Golang-Tutorial
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Coroutinen und Threads in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!