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

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

Go 例程及其并發問題

Go 例程及其并發問題

Go
米琪卡哇伊 2021-09-13 20:11:16
接受并連接兩個單獨的連接集。想和RPC同時做。我正在嘗試在我的計算機上創建半分布式系統。我現在正在處理的代碼片段類似于代理節點,換句話說,它始終接受來自端口的客戶端連接。它還不斷接受來自不同端口的后端節點連接。我正在嘗試找到一種同時偵聽兩者并為兩者提供服務的方法。我正在使用 RPC,我嘗試這樣做的方式是這樣的:主要:func main(){   ...   rpc.Register(myInterface)   l, err := net.Listen("tcp", client_port)   if err != nil {...}   go handleClients(l)   node_l, err := net.Listen("tcp", node_port)   if err != nil{...}    go setUpIncomingNodes(node_l, chan)   for{// add nodes to a list from chan} }并發功能:// Adds clients to be connectedfunc handleClients(listener net.Listener){ for{  conn, err :=listener.Accept()  if err != nil{...}  // Starts up a blocking (on that thread) RPC connection  go rpc.serveConn(conn) }}func setUpIncomingNodes(node_listener net.Listener, incoming_nodes chan<- net.Conn){ for{  conn, err := node_listener.Accept()  if err != nil{...}  incoming_nodes <- conn      }}問題是它不為第一個節點提供服務,直到第二個節點出現。我不明白為什么。此外,似乎一次只能發生一個連接,但我認為 RPC 在不同的端口上提供服務(因此不會阻止它)。任何幫助都非常感謝。我嘗試遵循本教程,但我發現情況太不同了,它也使用了不同版本的 Go。我使用兩種類型的節點/連接,其中類型 A 需要通過代理服務到類型 B。
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 193 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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