Blockiert Time.Sleep Goroutinen?
Die Nutzung von time.Sleep wirft die Frage auf, ob es Goroutinen behindert. Die Antwort lautet „Ja“.
Die Art und Weise, wie Goroutinen threadübergreifend geplant werden, kann sich jedoch mit jeder Veröffentlichung ändern und kann je nach Plattform variieren. Es folgt dem „MPG-Modell“, das ein konzeptionelles Verständnis vermittelt, aber keine genaue Beschreibung des Planungsalgorithmus darstellt.
Beim Aufruf von time.Sleep kann der Planer zu dem Schluss kommen, dass zusätzliche Threads unnötig sind, Goroutinen hingegen lediglich Warten. Dadurch wird die Thread-Nutzung optimiert.
Unterscheidung zwischen Beispielen
Im ersten Beispiel erstellt der Scheduler mit time.Sleep eine bescheidene Anzahl von Threads, da die Goroutinen sind inaktiv. Im Gegensatz dazu verwendet das zweite Beispiel Festplatten-E/A, was zusätzliche Threads erfordert, um die gleichzeitigen Dateischreibvorgänge zu verarbeiten.
Wann man sich Sorgen machen sollte
Obwohl es theoretisch möglich ist Wenn Sie durch absichtliche Codemanipulation eine übermäßige Anzahl von Kernel-Threads erstellen, stellt dies für Entwickler, die regulären Produktionscode schreiben, kein häufiges Problem dar. Wenn Sie jedoch auf eine ungewöhnlich hohe Thread-Anzahl stoßen, ist es ratsam, Ihren Code zu überprüfen und alle zugrunde liegenden Probleme zu beheben.
Das obige ist der detaillierte Inhalt vonBlockiert „time.Sleep' Goroutinen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!