Heim > Artikel > Backend-Entwicklung > Hat Golang einen Prozess?
golang hat Prozesse. Ein Prozess ist ein Ausführungsprozess eines Programms im Betriebssystem und stellt die Grundeinheit für die Ressourcenzuweisung und -planung durch das System dar. Ein Prozess ist ein dynamisches Konzept und die Grundeinheit für die Zuweisung und Verwaltung von Ressourcen während der Ausführung von a Programm. Jeder Prozess verfügt über einen eigenen Adressraum. Die Go-Sprache unterstützt mehrere Prozesse und ihr Thread-Modell ist das MPG-Modell. Im Allgemeinen besteht eine Viele-zu-Viele-Entsprechung zwischen Go-Prozessen und Kernel-Threads.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, GO Version 1.18, Dell G3-Computer.
2. ThreadEin Thread ist eine Ausführungsinstanz eines Prozesses und die kleinste Einheit der Programmausführung. Es handelt sich um eine Grundeinheit, die kleiner als ein Prozess ist und unabhängig ausgeführt werden kann.
Laienhaft ausgedrückt: Ein Prozess kann mehrere Threads erstellen und mehrere Threads im selben Prozess können gleichzeitig ausgeführt werden. Damit ein Programm ausgeführt werden kann, muss es mindestens einen Prozess geben. 2. Über Parallelität und Parallelitätwird in jedem Zeitraum ausgeführt.
2. Parallel
Multithread-Programme werden als Parallelität bezeichnet, wenn sie auf einer Single-Core-CPU ausgeführt werden, und parallel, wenn sie auf einer Multi-Core-CPU ausgeführt werden. Wenn die Anzahl der Threads größer ist als die Anzahl der CPU-Kerne, läuft ein Multithread-Programm sowohl gleichzeitig als auch parallel auf mehreren CPUs.
können als Threads auf Benutzerebene verstanden werden, die für den Kernel transparent sind, das heißt, das System kennt die Existenz von Coroutinen nicht und wird vollständig vom eigenen Programm des Benutzers geplant. Ein Hauptmerkmal von Golang ist, dass es Coroutinen aus sprachlicher Sicht nativ unterstützt. Sie können eine Coroutine erstellen, indem Sie das Schlüsselwort go vor einer Funktion oder Methode hinzufügen. Man kann sagen, dass die Coroutine in Golang Goroutine ist.
Jede Goroutine (Coroutine) in Golang belegt standardmäßig viel weniger Speicher als Java- und C-Threads. Betriebssystem-Threads (Betriebssystem-Threads) verfügen im Allgemeinen über einen festen Stapelspeicher (normalerweise etwa 2 MB). Der Planungsaufwand für den Goroutine-Switching mit mehreren Goroutinen ist viel geringer als bei Threads. Dies ist einer der Gründe, warum immer mehr große Unternehmen Golang nutzen.
package main import "fmt" func test() { for i := 0; i <h3 id="1.%20%E9%A1%BA%E5%BA%8F%E6%89%A7%E8%A1%8C"><strong>2. Hinzufügen von Zeit</strong></h3><pre class="brush:php;toolbar:false">package main import "fmt" func test() { for i := 0; i <h3 id="2.%20%E5%8A%A0%E5%85%A5go"><strong>4 geht schnell</strong></h3> <pre class="brush:php;toolbar:false">package main import ( "fmt" "time" ) // 加入时间 func test1() { for i := 0; i <h3 id="3.%20%E5%8A%A0%E5%85%A5%E6%97%B6%E9%97%B4"><strong>5. sync.WaitGroup löst das Problem des Nicht-Wartens</strong></h3><pre class="brush:php;toolbar:false">package main import ( "fmt" "time" ) func test1() { for i := 0; i <h3 id="4.%20%E4%B8%BB%E7%BA%BF%E7%A8%8B%E6%89%A7%E8%A1%8C%E5%BF%AB%E7%9A%84%E6%83%85%E5%86%B5"><strong>6. Gleichzeitige Ausführung mehrerer Coroutinen</strong></h3><pre class="brush:php;toolbar:false">package main import ( "fmt" "time" "sync" ) var wg sync.WiatGroup func test2() { for i := 0; i <h3 id="5.%20sync.WaitGroup%E8%A7%A3%E5%86%B3%E4%B8%8D%E7%AD%89%E5%BE%85"><strong>5. Legen Sie die Anzahl der von Golang belegten CPU-Kerne fest )</strong></h3><pre class="brush:php;toolbar:false">package main import ( "fmt" "time" "sync" ) func hello(num int) { defer wg.Done() for i := 0; i <h3 id="6.%20%E5%A4%9A%E5%8D%8F%E7%A8%8B%E5%B9%B6%E5%8F%91%E5%B9%B6%E8%A1%8C%E6%89%A7%E8%A1%8C">Mehr Für mehr Programmierwissen besuchen Sie bitte: <strong>Programmiervideos</strong>! ! </h3>
Das obige ist der detaillierte Inhalt vonHat Golang einen Prozess?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!