V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Gota  ›  全部回复第 1 页 / 共 9 页
回复总数  173
1  2  3  4  5  6  7  8  9  
148 天前
回复了 dagu111 创建的主题 游戏 怎么看魂类游戏,大家觉得好玩么 ?
吸引力在游戏的 steam 页上就有:“体验学习、克服、获得成就感的连锁效应”。
但类魂游戏目前玩了一些,还没见到哪个能学到魂的精髓的。
159 天前
回复了 shanhuse 创建的主题 程序员 计算机专业最重要一门课程是哪个?
英语, 数据结构
知行合一很重要, 毕业前至少得以生产环境为目标写出一个完整的项目吧.
164 天前
回复了 gzk329 创建的主题 数据库 [求助] 多条件查询怎么实现比较好?
不确定你用的是什么数据库。如果是关系型数据库,把用户自定义字段单分一张表存,而不是挤在一个 JSON 里,会不会比较容易查?
@paceewang1 见#23 楼和后续的回复,还是有点问题
@paceewang1 #36
@Jrue0011 #37
见 #30 的回复,帖子末尾的写法是不需要锁的
181 天前
回复了 newshbb 创建的主题 程序员 新项目采用纯 JS 技术栈还是 Go+JS?
@newshbb 现在在外面,微信发我,晚上聊聊看。
@nuk 没有 close ,是换成了一个无缓冲的 channel ,从而确保能 select 到第一个 case 。
181 天前
回复了 intoext 创建的主题 硬件 有什么好的小主机推荐吗?最好静音版的
Mac mini ,平时工作就用这个
@nuk 直接丢数据肯定不行,正文末尾的写法也不用等其他线程呀。
@soap520 哈哈, 异步相关的东西确实比较烧脑. 1L 重新赋值一个无缓冲 channel 是为了防止 stop 之后有数据进入 chData 却没人来处理, 随着主线程退出这份数据就丢掉了. 至于加锁, 不到万不得已最好别加, 否则每调一次 Log 整个应用都被锁一下, 就有点夸张了.
@soap520 那就剩下 #22 里你自己提到的那个 panic 问题了. 这里的用例是 slog 的 hook, 所以 submit 可能会在任意线程中被调用, 数量和时机都是没办法控制的, 也就是说 submit 里那个过了 if 之后的挂起其实很容易触发.
@realpg 升到 1.21.1 试试呢? 一般我都等大版本之后的一个小版本才开始正式用, 最开始那个版本确实容易出一些小问题.
@soap520 你这里把 close(chData) 放到 for 循环之后执行, 那 for 循环就永远结束不了了.
@qing18 不 close(chData) 就是帖子末尾处的写法.
这里的 submit 接口需要确保: 如果不返回错误的话, 写入的 data 是一定要被处理的.
所以如果不 close 也不换成一个无缓冲 channel 的话, 会出现调用者认为数据成功提交了, 但实际上却没处理的情况.
@pkoukk 因为这是个 Logger, 调用者从各个线程触发写日志的操作. 在主线程调用 stop() 的时候没法确保其他线程都提前停下来不写日志. 如果 writer 返回 ErrClose 的话 slog 是能处理的, 但直接 panic 掉就不行了.
@wentx

因为并发环境下函数执行随时会被挂起. 如果 submit 执行完 if 判断被挂起, 去执行 stop, 等恢复执行 submit 的时候就会 panic

即使正常执行, 如果 submit 执行到 chData <- n 如果因为 buffer 满了开始等待, 此时执行 stop, 会 100% panic.
#13 @wentx 嗯... 并发环境下直接用 bool 值已经很危险了. 而且即使这样写, 程序卡住和 panic 的问题依然会存在.
#14 @pkoukk defer 也不行, 哪怕 stop() 已经完全执行完了. 这时候调 submit() 还是有概率选到第二个 case.
@wentx 没听太明白, 可以具体描述下吗?
@wentx 但 submit() 不一定只有一个线程在调用. 而且如果在 stop 清空存量任务的过程中, 有另一个 submit() 调用, 还是会走到第二个 case 的吧? 可能还有一个问题, 如果没有 submit() 直接调用 stop() 程序就卡住了.
#3 @wentx 只要 select 是无序的, 都有可能选到第二个. https://stackoverflow.com/questions/68650423/do-select-statements-guarantee-order-of-channel-selection

#4 @hsfzxjy 结尾那套写法就没 close, 想看看有没有其他的处理方式.
1  2  3  4  5  6  7  8  9  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3209 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 29ms · UTC 11:36 · PVG 19:36 · LAX 04:36 · JFK 07:36
Developed with CodeLauncher
♥ Do have faith in what you're doing.