为了账号安全,请及时绑定邮箱和手机立即绑定

与 google go 中的频道共享资源

与 google go 中的频道共享资源

Go
LEATH 2021-07-15 14:15:38
我在Google Go构建实时系统时正在研究该语言,我发现通过渠道共享资源有点混乱。我试图为了理解,让不同的goroutines人增加和减少共享值相同的次数,最终为 0。我知道我的代码是错误的,但我并没有真正掌握它。有人愿意解释这里有什么问题吗?package mainimport (    . "fmt"    . "runtime")func increment(c chan int) {    for x := 0; x < 10; x++ {        a := <-c        a++        c <- a    }}func decrement(c chan int) {    for x := 0; x < 10; x++ {        a := <-c        a--        c <- a    }}func main() {    GOMAXPROCS(NumCPU())    c := make(chan int)    go increment(c)    go decrement(c)    Println(<-c)}我可以使用互斥锁或信号量,类似于我使用Cor 的方式Python,尽管我想利用Go.**更新添加会WaitGroup改变程序流程吗?我加了一个WaitGroup,效果很好。虽然,我Done()在整个 for 循环之后添加了该函数,那么整个循环会在increment之前运行decrement吗?我有点希望它们尽可能地“并行”运行,我知道只有一个例程可以访问 I,但我希望它们彼此独立运行。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 236 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信