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

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

如何編排并發(fā)請求-響應(yīng)流?

如何編排并發(fā)請求-響應(yīng)流?

Go
慕桂英3389331 2021-12-07 10:03:20
我是并發(fā)編程的新手,不知道從什么概念開始,所以請保持溫和。我正在編寫一個(gè) web 服務(wù)作為 TCP 服務(wù)器的前端。該服務(wù)器偵聽我給它的端口,并將響應(yīng)返回給每個(gè)請求的 TCP 連接。這就是我為此服務(wù)器編寫 Web 服務(wù)前端的原因:服務(wù)器一次可以處理一個(gè)請求,我試圖通過啟動多個(gè)進(jìn)程并為它們提供不同的端口來偵聽,從而使其能夠同時(shí)處理多個(gè)輸入。例如,我想啟動 30 個(gè)實(shí)例并告訴它們偵聽端口 20000-20029。我們的團(tuán)隊(duì)使用 PHP,而 PHP 沒有能力啟動服務(wù)器實(shí)例并同時(shí)維護(hù)它們,所以我正在嘗試編寫一個(gè) API,它們只能向其發(fā)送 HTTP 請求。所以,這是我想到的結(jié)構(gòu)。我會有一個(gè)main()功能。此函數(shù)同時(shí)啟動進(jìn)程,然后在端口 80 上啟動 HTTP 服務(wù)器并進(jìn)行偵聽。我有一個(gè)http.Handler將請求的內(nèi)容添加到頻道的。我將有 gorutines,每個(gè)服務(wù)器實(shí)例一個(gè),處于無限循環(huán)中。第 3 項(xiàng)中提到的函數(shù)的代碼將是這樣的:func handleRequest(queue chan string) {    for {        request := <-queue        conn, err := connectToServer()        err = sendRequestToServer(conn)        response, err := readResponseFromServer(conn)    }}所以,我http.Handler可以簡單地做一些事情,比如queue<- request將請求添加到隊(duì)列中,并且handleRequest已經(jīng)阻塞,等待通道有東西可以獲取,將簡單地獲取請求并繼續(xù)。完成后,循環(huán)結(jié)束,執(zhí)行返回到request := <-queue,并繼續(xù)相同的事情。我的問題始于http.Handler. 將請求放入一個(gè)通道是非常有意義的,因?yàn)槎鄠€(gè) gorutine 都在監(jiān)聽它。但是,這些 gorutines 如何將結(jié)果返回給 my http.Handler?一種方法是使用一個(gè)通道,我們稱之為responseQueue,然后所有這些 gorutines 將寫入。問題是,當(dāng)一個(gè)響應(yīng)添加到通道時(shí),我不知道它屬于哪個(gè)請求。換句話說,當(dāng)多個(gè)http.Handlers 發(fā)送請求時(shí),每個(gè)正在執(zhí)行的處理程序?qū)⒉恢劳ǖ乐械漠?dāng)前消息屬于哪個(gè)響應(yīng)。是否有最佳實(shí)踐或模式將數(shù)據(jù)從另一個(gè) gorutine 發(fā)送到 gorutine 并接收回?cái)?shù)據(jù)?
查看完整描述

1 回答

?
繁花如伊

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊

創(chuàng)建每個(gè)請求響應(yīng)通道并將其包含在發(fā)送給工作程序的值中。處理程序從通道接收。工作人員將結(jié)果發(fā)送到通道。


查看完整回答
反對 回復(fù) 2021-12-07
  • 1 回答
  • 0 關(guān)注
  • 153 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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