Состояние гонки с bufio.NewWriter, но не с io.MultiWriter - PullRequest
0 голосов
/ 25 мая 2020

Я смотрю на безопасность горутин, и у меня есть приведенный ниже код для иллюстрации. Я обнаруживаю состояние гонки, когда запускаю приведенный ниже код, который понятен.

var buffer1, buffer2 bytes.Buffer

// two writers to same buffer
writer1 = bufio.NewWriter(&buffer1)
writer2 = bufio.NewWriter(&buffer1)

c := func(dst io.Writer, src io.Reader) {
    io.Copy(dst, src)
}

go c(writer1, os.Stdin)
go c(writer2, os.Stderr)

У меня один раз состояние гонки возникает во время выполнения, когда я заменяю bufio.NewWriter на io.MultiWriter как показано ниже. Но использование детектора состояния гонки не показывает мне каких-либо гонок данных, происходящих в приведенном ниже фрагменте кода. . безопасно ли это и почему встречается редко?

...