問題:
並發將輸出寫入作業系統是否安全.來自多個goroutine 的標準輸出?
程式碼範例:
<code class="go">package main import ( "fmt" "os" "strings" ) func main() { x := strings.Repeat(" ", 1024) go func() { for { fmt.Fprintf(os.Stdout, x+`aa\n`) } }() go func() { for { fmt.Fprintf(os.Stdout, x+`bb\n`) } }() go func() { for { fmt.Fprintf(os.Stdout, x+`cc\n`) } }() go func() { for { fmt.Fprintf(os.Stdout, x+`dd\n`) } }() <-make(chan bool) }</code>
答案:
提供的程式碼不會產生結果在資料競賽中。然而,寫入 os.Stdout 的資料順序是不確定的,並且在不同的執行中可能會有所不同。
說明:
建議:
以上是Golang 中並發寫入 os.Stdout 安全且確定嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!