V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  wentx  ›  全部回复第 2 页 / 共 9 页
回复总数  161
1  2  3  4  5  6  7  8  9  
184 天前
回复了 DavidTsou 创建的主题 分享发现 想看看你们的桌面壁纸
198 天前
回复了 uuferr 创建的主题 Apple 买 M2 max 还是 M3 pro 实在纠结啊!
买设备
上顶配
不上顶配太遭罪
买前纠结不能睡
买完感觉不对味
过了七天没法退
一月下来心里悔
二手折价都是泪
折腾半天心太累
不如当初上!顶!配!
216 天前
回复了 fyzhh 创建的主题 数据库 关于开后门
你这手动改线上 DB ? 慌的一批啊,还是银行。。 真刑
216 天前
回复了 Anshay 创建的主题 Windows 10 系显卡玩游戏巨卡处理记录
带妹子回家为啥要玩游戏?
@Aizorro
投递简历地址:jobs#qiniu.com
把 # 替换成 @
智能硬件,后端调 OpenAI 的 API
@Gota 会啥会卡住 和 panic 呢?
并发的话,atomic.LoadXXX 或者 atomic.StoreXXX
@Gota
```
var (
ErrClosed = errors.New("closed")
chQuit bool
chData = make(chan int, 10)
)

// func start() { ... }

func submit(n int) error {
if chQuit {
return ErrClosed
}

chData <- n:

return nil
}

func stop() {
chQuit = true
close(chData)

for n := range chData {
// process data
_ = n
}
}
```
在这个场景下面,甚至都不需要使用 channel 来通知,你直接一个全局变量,在 submit 的时候,判断一下是否是 close 就可以了。
@Gota 这个是队列设计的问题了,如何保证 producer 关闭后,其他 goroutine 调用 submit 没有副作用。
@wentx 然后 stop 的最后再去 close(chQuit)
@Gota 不不不,你 chQuit 是无缓冲的 channel, 你在往里写的时候,会阻塞,等到 submit 函数里面
case <-chQuit:
return ErrClosed

这段执行到,才会走到下一步 close(chData),这个时候 submit 函数已经退出,所以 submit 不会 panic
close(chQuit) 改成 chQuit <- struct{}{}

试试
看看这个 https://gitness.com
拉皮条
下一位
建议高铁或者飞机。

除非你是特别喜欢开车
@wentx 解决了,现在有第二个问题,密码不能复制到输入框里面
1  2  3  4  5  6  7  8  9  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1046 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 31ms · UTC 23:16 · PVG 07:16 · LAX 16:16 · JFK 19:16
Developed with CodeLauncher
♥ Do have faith in what you're doing.