小编典典

将多个goroutine打印到stdout是否安全?

go

我的程序中有多个goroutine,每个goroutine都进行调用而fmt.Println没有任何显式同步。这样安全吗(即,每行将单独出现而不会破坏数据),还是我需要创建另一个带有同步的goroutine来专门处理打印?


阅读 327

收藏
2020-07-02

共1个答案

小编典典

不,即使您有时可能没有发现任何麻烦,也不安全。IIRC,fmt软件包试图处于安全状态,因此可能会发生某种混合,但希望不会导致进程崩溃。

这是一个更通用的Go文档规则的实例:除非另有指定或从上下文中可以明显看出,否则对于并发访问而言,事物并不安全。

可以使用带有少量初始设置的日志包来获得fmt.Print *功能的子集的安全版本。

2020-07-02