go channel 并发也会有并发问题
package main
import (
"fmt"
"time"
)
func main() {
ch := make(chan bool, 10)
if ch == nil {
fmt.Println("ch is nil")
}
go func() {
for i := 0; i < 100; i ++ {
if i % 2 == 0 {
ch = nil
}else {
ch = make(chan bool, 10)
time.Sleep(1 * time.Second)
}
}
//fmt.Printf("go 1 new &ch: %v \n", ch)
}()
go func() {
//fmt.Printf("go 2 &ch: %v \n", ch)
for {
select {
case ch <- true:
fmt.Println("enter true case")
default:
fmt.Println("enter default case ")
}
}
}()
time.Sleep(10 * time.Second)
}
一个线程读chan,一个线程不断修改chan,也会有data race报错。
var code = "c9f6ec1e-d994-47a2-9691-8fc7207d30f8"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术