Heim > Backend-Entwicklung > Golang > Golang-Kontextwechsel

Golang-Kontextwechsel

WBOY
Freigeben: 2024-02-06 09:10:08
nach vorne
877 Leute haben es durchsucht

Golang 上下文切换

Frageninhalt

Ich habe eine ganz grundlegende Frage: Kann der Betriebssystem-Scheduler-Kontext zwischen Threads auf Benutzerebene wechseln, die der Kernel-Ebene zugeordnet sind?

Angenommen, der Goscheduler plant eine Goroutine A im Kernel-Thread. Jetzt führt Goroutine A einen Sysblock-Aufruf durch. Wer wechselt zuerst den Kontext: das Betriebssystem oder der Go-Scheduler?


Richtige Antwort


Der Go-Scheduler verwaltet Goroutinen, die in Threads auf Betriebssystemebene wiederverwendet werden. Der Go-Scheduler kann effizient Kontextwechsel zwischen Goroutinen durchführen, beispielsweise wenn eine Goroutine einen blockierenden Systemaufruf durchführt, ohne den Betriebssystem-Scheduler einzubeziehen. Es ist jedoch wichtig zu beachten, dass der Betriebssystem-Scheduler aufgrund von Faktoren wie der Zeitaufteilung unabhängig voneinander Unterbrechungen und Kontextwechsel durchführen kann. Daher kann der genaue Zeitpunkt eines Kontextwechsels und die Beteiligung des Betriebssystem-Schedulers aus Sicht des Go-Programms möglicherweise nicht genau bestimmt werden.

Weiterführende Literatur:

proc.go im Golang-Quellcode

Go Scheduler: Implementierung einer leichten Parallelitätssprache

Das obige ist der detaillierte Inhalt vonGolang-Kontextwechsel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage