问题:
并发将输出写入操作系统是否安全.来自多个 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中文网其他相关文章!