Im Wesentlichen ist Goroutine eine Coroutine.
Der Unterschied besteht darin, dass Golang die Goroutine-Planung in vielen Aspekten wie Laufzeit und Systemaufrufen kapselt und verarbeitet. Bei langfristigen Ausführungs- oder Systemaufrufen nutzt es aktiv die CPU der aktuellen Goroutine (P) Übertragen Sie es, damit andere Goroutinen geplant und ausgeführt werden können. Das heißt, Golang unterstützt Coroutinen auf Sprachebene.
Ein Hauptmerkmal von Golang ist, dass es Coroutinen nativ von der Sprachebene aus unterstützt. Sie können eine Coroutine erstellen, indem Sie das Schlüsselwort go vor einer Funktion oder Methode hinzufügen. (Empfohlenes Lernen: go)
Coroutine ist eine leichtgewichtige Thread-Implementierung in der Go-Sprache und wird von der Go-Laufzeit verwaltet.
GO-Version: Go-Version go1.4.2 Linux/amd64
Testumgebung:
[root@localhost mpro]# more /proc/cpuinfo | grep "model name" model name : Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz model name : Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz model name : Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz model name : Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz [root@localhost mpro]# [root@localhost mpro]# grep MemTotal /proc/meminfo MemTotal: 3868776 kB [root@localhost mpro]# getconf LONG_BIT 64 [root@localhost mpro]# more /etc/redhat-release CentOS Linux release 7.1.1503 (Core)
Testfall:
package main import ( "time" ) func main() { for i := 0; i < 200000; i++ { go func() { time.Sleep(5 * time.Second) }() } time.Sleep(10 * time.Second) }
Vor der Ausführung des Programms:
top - 18:53:19 up 19 min, 3 users, load average: 0.00, 0.04, 0.11 Tasks: 522 total, 1 running, 521 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.1 us, 0.2 sy, 0.0 ni, 99.6 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st KiB Mem : 3868776 total, 3327732 free, 235764 used, 305280 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 3397344 avail Mem
Nach der Ausführung des Programms:
top - 18:53:37 up 19 min, 3 users, load average: 0.00, 0.04, 0.11 Tasks: 524 total, 1 running, 523 sleeping, 0 stopped, 0 zombie %Cpu(s): 1.2 us, 10.6 sy, 0.0 ni, 88.2 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st KiB Mem : 3868776 total, 2793732 free, 752512 used, 322532 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 2880016 avail Mem
Zusammenfassung: 200.000 Coroutinen belegen 500 MB Speicher und 500.000 KB
Im Durchschnitt belegt eine Coroutine 2,5 KB
Das obige ist der detaillierte Inhalt vonWie viel Speicher belegt die Golang-Coroutine?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!