亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

與 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 關注
  • 263 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號