Heim >Backend-Entwicklung >Golang >Goroutinen, Benutzer-Threads und Kernel-Threads: Was ist der Unterschied?

Goroutinen, Benutzer-Threads und Kernel-Threads: Was ist der Unterschied?

Susan Sarandon
Susan SarandonOriginal
2024-12-10 09:35:11211Durchsuche

Goroutines, User Threads, and Kernel Threads: What's the Difference?

Unterscheidung von Goroutinen, Benutzer-Threads und Kernel-Threads

Einführung

Die Konzepte von Goroutinen , Benutzer-Threads und Kernel-Threads können verwirrend sein, wenn man die Feinheiten von Gos erforscht Parallelitätsmodell. Ziel dieses Artikels ist es, diese Konzepte zu klären und verwandte Fragen zu beantworten.

Frage 1: Betriebssystem-Threads und Goroutinen definieren

Frage:

  • In der Einführung zu „Effective Go“ werden Goroutinen erwähnt. Worauf bezieht sich „OS-Threads“? Handelt es sich um Benutzer- oder Kernel-Threads?

Antwort:

  • „Betriebssystem-Threads“ bezieht sich auf Kernel-Threads.

Frage 2: P und G im Go verstehen Scheduler

Frage:

  • Warum ist die Anzahl der P (Prozessor-/Scheduling-Kontexte) gleich der Anzahl der CPU-Kerne?
  • Was passiert mit anderen Programmen im Betriebssystem, die CPU benötigen, wenn alle CPUs Go-Programme bedienen? Zuordnung?

Antwort:

  • P dient als Zuordnungsschicht zwischen Goroutinen und Kernel-Threads. Es gibt ein P pro Kernel-Thread.
  • Go-Programme können standardmäßig alle verfügbaren CPU-Kerne zuweisen (GOMAXPROCS), dies verhindert jedoch nicht die Ausführung anderer Betriebssystemprozesse. Selbst bei gleichzeitigen Vorgängen verbringen Prozesse viel Zeit damit, auf E/A-Vorgänge zu warten, sodass der Kernel-Scheduler CPU-Zeit anderen Programmen zuweisen kann.

Frage 3: Anzahl der generierten Kernel-Threads

Frage:

  • Wie viele Kernel Threads werden vom Betriebssystem generiert?

Antwort:

  • Die Anzahl der vom Betriebssystem erstellten Kernel-Threads ist dynamisch und hängt vom System ab laden.

Das obige ist der detaillierte Inhalt vonGoroutinen, Benutzer-Threads und Kernel-Threads: Was ist der Unterschied?. 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