Heim  >  Artikel  >  Backend-Entwicklung  >  Hat Golang einen Prozess?

Hat Golang einen Prozess?

青灯夜游
青灯夜游Original
2022-12-26 17:38:274880Durchsuche

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.

Hat Golang einen Prozess?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, GO Version 1.18, Dell G3-Computer.

1. Über Prozesse und Threads

Ein Prozess ist ein Ausführungsprozess eines Programms im Betriebssystem. Er ist die Grundeinheit für die Ressourcenzuweisung und -planung durch das System Ein dynamisches Konzept ist die Grundeinheit für die Zuweisung und Verwaltung von Ressourcen während der Programmausführung. Jeder Prozess verfügt über einen eigenen Adressraum. Ein Prozess hat mindestens 5 Grundzustände: Anfangszustand, Ausführungszustand, Wartezustand, Bereitschaftszustand und Beendigungszustand. Laienhaft ausgedrückt:

Ein Prozess ist ein ausführendes Programm.

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ät

wird in jedem Zeitraum ausgeführt.

Hat Golang einen Prozess?

2. ParallelHat Golang einen Prozess?

Mehrere Threads können gleichzeitig ausgeführt werden. In jedem Zeitraum können mehrere Threads gleichzeitig ausgeführt werden.

3. Für Laien

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. Hat Golang einen Prozess?

3. Goroutine-Coroutine und Haupt-Thread

1. Der Haupt-Thread

Hat Golang einen Prozess?

kann als Thread oder Prozess verstanden werden, der im Haupt-Thread eines Golang-Programms aktiviert werden kann. Mehrere Coroutinen in Golang können Parallelität oder Parallelität erreichen.

2. Coroutinen

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.

Multi-Coroutine in Golang ähnelt in gewisser Weise dem Multi-Threading in anderen Sprachen.

3. Multi-Coroutine und Multi-Thread

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.

4. Praktische Bedienung von Go-Schlüsselwörtern

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn