|
maocatJul 18, 2022 via iPhone
1
为什么不用 errgroup
|
|
3
@maocat 看了一下 errGroup 的用法,虽然也可以代替 waitgroup ,但是好像和 errGroup 的定义即有错误就退出的应用场景有点不太相符吧?
|
|
4
你这样给 result 赋值可能会因为 data race 而 panic 吧
|
|
Trim21Jul 19, 2022 via Android
5
既然都用了 wait group 了为什么 MultiJudge 还要额外用 resultChan 来控制,为什么不直接把 wg.Wait 移到外面来,删掉 result chan ?
或者直接用 result chan 来传递各个 goroutine 的结果,还能避免并发读写的问题。 |
|
djoiwhudJul 19, 2022 via Android
7
result 确实会 panic
这两个函数没一个字的注释,我敢说,你自己都没想明白到底是要做什么。 最大的问题是写的太啰嗦。实际项目上不会这么写。 |
|
love2020Jul 19, 2022
8
前面大佬说了 result 共享内存了都, 玩的什么🐍皮
|
|
9
@Trim21 这个其实做的是 if(judge1(value) || judge2(value) || judge3(value)) 这样的判断,如果有一个返回真其他就不继续等待结果了,所以我把 wg.Wait()放到协程里去了
|
|
11
@Askiz #9 你的 gorountine 里面就没必要写 resultChan <- ,这些 router 都已经运行完了 judgeFunc(value),为什么还要阻塞呢。
https://gist.github.com/Trim21/157f85d710dae45e29d7c10504a4c93d atomic 没给 bool 类型,就直接用 int32 了 |
|
13
因为我想有一个 judgefunc 为这真就马上返回结果,不等待其他协程运行结束,所以把 wg.wait 放到协程里,如果都不为真,wg.wait 语句结束后会往 resultchan 里传值,外面语句接收到信号后才返回结果 false
|
|
14
搞个 judgefuncs 次长度的 resultChan ,就在外面读 judgefuncs 次 resultChan , 有 true 就返回 true ,一轮下来都没就 false 。
|
|
MatthewMurdockJul 19, 2022
15
https://gist.github.com/murDDock/a89734f2378bf433d18c9f6a814e7918 我稍微修改了一下 有点啰嗦 我也不太行 一起学习
|
|
16
https://gist.github.com/mingkwind/fdbf7d076a6677d3d89bdc06c49053bd
采取 4P/14P/15P 的意见,改完差不多是这样 |
|
eastphotonJul 19, 2022
17
说句难听的,充满了脱裤子放屁。。。
|
|
js2854Jul 21, 2022
18
errgroup +1
|