了解Windows 上Goroutines 的行為
在你的測驗程式中,你定義一個名為test() 的goroutine,它只列印字串"測試。」然而,您會遇到意外行為,goroutine 似乎沒有運行。
問題是由 goroutine 執行的性質引起的。與傳統執行緒不同,goroutines 是協作的,這意味著 Go 運行時管理它們的調度。在你的例子中,主函數在 goroutine 有機會執行之前返回。
Go 語句和 Goroutine
go 語句非同步呼叫函數。當在主函數中使用時,如您的範例所示,程式執行不會等待呼叫的函數完成。這是因為main函數不參與goroutine管理。
為了確保goroutine執行,需要提供一個方法讓程式等待。這可以透過以下方式實現:
基於時間的等待範例:
這是程式的修改版本,其中包括基於時間的等待:
<code class="go">package main import ( "fmt" "time" ) func test() { fmt.Println("test") } func main() { go test() time.Sleep(10 * time.Second) }</code>
在此範例中,時間。 Sleep 函數會暫停 main 函數 10 秒,為 goroutine 提供充足的執行時間。
透過了解 goroutine 的行為並結合適當的技術來確保其執行,您可以在 Golang 程式中有效地使用 goroutine。
以上是為什麼我的 Goroutine 不能在 Windows 上運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!