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

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

奇怪的 Goroutines 行為

奇怪的 Goroutines 行為

Go
喵喔喔 2021-06-19 19:10:51
如果我錯了,請糾正我。據我所知,goroutine 的工作原理與線程大致相似。所以如果我用不同的參數生成相同的函數,前綴為 go。它應該可以正常工作嗎?package mainimport "fmt"func f(from string) {    for i := 0; i < 3; i++ {        fmt.Println(from, ":", i)    }}func main() {    go f("direct")    go f("redirect")    //var input string    //fmt.Scanln(&input)}實際輸出:rahul@g3ck0:~/programs/go$ go run goroutine.go rahul@g3ck0:~/programs/go$ 我剛回來提示。預期輸出:direct : 0direct : 1direct : 2redirect : 0redirect : 1redirect : 2不一定按相同的順序。無法理解這種奇怪的行為。我錯過了什么嗎?編輯:添加 Scan 語句可以解決它。但是有沒有更好的方法呢?
查看完整描述

2 回答

?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

如上所述,最后的 select{} 確保顯示輸出,但您不能期望 go 例程以特殊順序運行。

如果您運行并行 go 例程,則永遠無法保證它們將按什么順序運行。你不能不讓它們按順序運行,因為它們是并行運行的!

您可能會在一臺機器上一次又一次地獲得預期的輸出,但不能保證每次在任何給定機器上都能按順序打印輸出?。?/p>


查看完整回答
反對 回復 2021-06-21
  • 2 回答
  • 0 關注
  • 215 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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