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

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

這個 goroutine 如何持續運行(它是如何工作的)?

這個 goroutine 如何持續運行(它是如何工作的)?

Go
qq_遁去的一_1 2022-06-01 12:31:49
我對 goroutine 的基本理解是它是一種創建線程的簡化方法。查看confluent-kafka-go庫,以以下代碼為例:    go func() {        for e := range p.Events() {            switch ev := e.(type) {            case *kafka.Message:                if ev.TopicPartition.Error != nil {                    fmt.Printf("Delivery failed: %v\n", ev.TopicPartition)                } else {                    fmt.Printf("Delivered message to %v\n", ev.TopicPartition)                }            }        }    }()    // Produce messages to topic (asynchronously)    topic := "myTopic"    for _, word := range []string{"Welcome", "to", "the", "Confluent", "Kafka", "Golang", "client"} {        p.Produce(&kafka.Message{            TopicPartition: kafka.TopicPartition{Topic: &topic, Partition: kafka.PartitionAny},            Value:          []byte(word),        }, nil)    }這是如何工作的?它會不會只運行一次并在遍歷所有內容后停止工作p.Events()?如何go知道不中止 goroutine 而是繼續輪詢p.Events()——即使它在大多數情況下都是空的?
查看完整描述

1 回答

?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

根據文檔Producer.Events(),它返回一個頻道。

僅當通道關閉時,對通道的測距才會終止。有關詳細信息,請參閱Go 之旅。


查看完整回答
反對 回復 2022-06-01
  • 1 回答
  • 0 關注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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