Wie verwaltet der Go-Scheduler die Erstellung von M und P bei blockierenden Vorgängen?

Mary-Kate Olsen
Freigeben: 2024-10-31 05:20:02
Original
489 Leute haben es durchsucht

How does the Go scheduler manage the creation of M and P in the presence of blocking operations?

M- und P-Erstellung im Go-Scheduler verstehen

Der Go-Scheduler basiert auf einem Modell, das Goroutinen, Betriebssystem-Threads (M) und Kontexte umfasst /Prozessoren (P). Um die Leistung zu optimieren, verwaltet der Scheduler die Erstellung und Nutzung von M und P dynamisch.

Erstellung von M

M wird erstellt, wenn der Scheduler erkennt, dass eine Blockierung ausgeführt werden muss Aufgaben. In Ihrem Beispielcode führen die Goroutinen blockierende Datenbankoperationen aus, die die Erstellung zusätzlicher M auslösen. Die genaue Anzahl der erstellten M hängt von der Anzahl der blockierten Goroutinen und den verfügbaren Systemressourcen ab.

Erstellung von P

P wird erstellt, wenn eine neue Goroutine gestartet wird. Allerdings erstellt der Scheduler nicht für jede Goroutine ein neues P. Stattdessen werden vorhandene P-Instanzen wiederverwendet und eine feste Anzahl von P beibehalten, die dem Wert von GOMAXPROCS entspricht und normalerweise auf die Anzahl der verfügbaren CPUs festgelegt ist.

In Ihrem Beispielcode

In Ihrem Testcode erstellen Sie 50 Goroutinen in zwei Stapeln. Da die Datenbankoperationen blockierend sind, wird M nach Bedarf erstellt, um die blockierenden Goroutinen zu verarbeiten. Da P-Instanzen jedoch wiederverwendet werden, werden nur 8 P erstellt, was der Anzahl der virtuellen Kerne auf Ihrem System entspricht.

Weitere Ressourcen

Zur weiteren Erkundung dieses Themas Weitere Informationen zum Thema finden Sie in diesen Ressourcen:

  • [Go Goroutine, OS Thread und CPU Management](https://www.programming-books.net/2019/07/understand-go-scheduler- goroutine.html)
  • [Das Go GMP (Goroutine-M-P)-Modell verstehen](https://blog.container-solutions.com/understanding-go-gmp-goroutine-m-p-model)

Das obige ist der detaillierte Inhalt vonWie verwaltet der Go-Scheduler die Erstellung von M und P bei blockierenden Vorgängen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!