1 回答

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊
您正在撥打兩次電話:rpc.Register(rs)
向代碼添加錯(cuò)誤檢查:
err := rpc.Register(rs)
if err != nil {
log.Println(err)
}
你會(huì)知道的:
rpc: service already defined: RPCServer
由于您在此處運(yùn)行兩個(gè)戈魯丁:
for i := 0; i < 2; i++ {
wg.Add(1)
go servers[i].server(&wg)
}
然后,他們倆都將使用以下命令注冊(cè)一個(gè) rpc 服務(wù)器:
rpc.Register(rs)
因此,其中之一是偶然的真實(shí)注冊(cè)服務(wù)器。由于運(yùn)行戈魯廷的時(shí)間未知,因此每次運(yùn)行都會(huì)有所不同
只需注冊(cè)一臺(tái)服務(wù)器即可。例如:
go servers[1].server(&wg)
代碼審查說(shuō)明:
rs.clients[port] = *client
包含和:sync.Mutex
首次使用后不得復(fù)制互斥體。
- 1 回答
- 0 關(guān)注
- 68 瀏覽
添加回答
舉報(bào)