gpt4 book ai didi

logging - 从 goroutines 写入 STDOUT 时避免困惑的输出

转载 作者:IT王子 更新时间:2023-10-29 01:34:04 24 4
gpt4 key购买 nike

当写入 stdout 或日志时,如何确保来自多个 goroutines 的输出不会搞乱输出吗?

例如确保输出是这样的

Routine 1 found 1235 entries
Routine 3 found 999 entries
Routine 2 found 24 entries

不是这样的

Routine 1 fouRoutine 3 found 999 entries
nd 1235 entriRoutine 2 found 24 entries
es

我的意思是一个 goroutine 的输出没有与另一个 goroutine 同时写入

即是否有库或标准方法来获取输出周围的信号量?

最佳答案

使用 log用于记录的包。来自 log.Logger:

A Logger represents an active logging object that generates lines of output to an io.Writer. Each logging operation makes a single call to the Writer's Write method. A Logger can be used simultaneously from multiple goroutines; it guarantees to serialize access to the Writer.

fmt 包是 generally not safe与多个 goroutine 一起使用。

如果时间(锁的同步)很重要,请在日志语句前加上go:

go log.Println("some log")

但是请注意,日志输出可能(很可能)会延迟。

关于logging - 从 goroutines 写入 STDOUT 时避免困惑的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20518829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com