第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如何在生產(chǎn)者/消費者場景中獲得消費者的響應(yīng)?

如何在生產(chǎn)者/消費者場景中獲得消費者的響應(yīng)?

Go
三國紛爭 2021-07-06 13:05:34
我一直在嘗試使用渠道來構(gòu)建某種生產(chǎn)者/消費者。我有一個requests頻道,許多生產(chǎn)者推送請求,然后我有processRequests處理請求的頻道。package mainvar requests chan stringfunc processRequests() {    for {        request <- requests        // Process request...        // And return response - how?    }}func main() {    requests = make(chan string)    go processRequests()    requests <- "doSomething"    requests <- "doSomethingElse"    requests <- "etc"    select {} // Block forever}我想知道的是,一旦請求得到滿足,將響應(yīng)發(fā)送回生產(chǎn)者(以及正確的響應(yīng),因為不止一個)的最佳方式是什么?基本上如何使這成為雙向通道?
查看完整描述

1 回答

?
Smart貓小萌

TA貢獻1911條經(jīng)驗 獲得超7個贊

你真的應(yīng)該使用兩個通道。試圖讓它與一個通道一起工作會很麻煩。


生產(chǎn)者/消費者模式上有一個可能有用的Google 站點。


為了讓生產(chǎn)者知道消費者正在響應(yīng)什么,您可以使用一個結(jié)構(gòu)作為響應(yīng):


type responseMessage struct {

    Request string

    Response string

}


var requests chan string

var responses chan *responseMessage


func processRequests() {

    for {

        request <- requests

        // Process request...

        responses <- &responseMessage{request, "some response string"}

    }

}


func processResponses() {

    someResponseMessage := <- responses

    if someResponseMessage.Request == "doSomething" {

        // do something!

    }

}


func main() {

    requests = make(chan string)

    responses = make(chan *responseMessage)


    go processRequests()

    go processResponses()


    requests <- "doSomething"

    requests <- "doSomethingElse"

    requests <- "etc"


    select {} // Block forever

}


查看完整回答
反對 回復(fù) 2021-07-19
  • 1 回答
  • 0 關(guān)注
  • 245 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號