gpt4 book ai didi

go - 当您向 channel 发送消息并关闭它时是否存在数据竞争?

转载 作者:IT王子 更新时间:2023-10-29 02:16:44 25 4
gpt4 key购买 nike

我遇到了数据竞争,像这样

WARNING: DATA RACE
11652 Read by goroutine 14:
11653 runtime.chansend()
11654 /usr/local/go/src/pkg/runtime/chan.c:155 +0x0
...
11657
11658 Previous write by goroutine 13:
11659 runtime.closechan()
11660 /usr/local/go/src/pkg/runtime/chan.c:1232 +0x0
...

channel 有锁,为什么会出现数据竞争?

最佳答案

channel 关闭后正在写入。即使只有一个 goroutine,您也会看到 panic 。

package main

func main() {
c := make(chan struct{})
close(c)
c <- struct{}{} // should panic!
}

你得到的是各种各样的,但是一个 goroutine 关闭,另一个 goroutine 试图在之后写入。竞争检测器正确地将此报告为数据竞争。

为什么您的程序中的 channel 被关闭了?

关于go - 当您向 channel 发送消息并关闭它时是否存在数据竞争?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26542405/

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