Open cch123 opened 4 years ago
在发起rpc的时候设置超时,wait不设置超时,这样问题是不是就不存在了
@chentaihan ,是的
在goroutine加lock非常影响并发,特别是发起rpc之前就加锁,这基本上导致了rpc 请求无法并发发起,这应该也是这段程序的问题。
m.Lock()针对的是写map,rpc可以先调用。可以在for循环外定义一个flag,函数返回时flag设为true,go func对map写入时判断flag。这样做抛弃了一部分超时的rpc响应,但是避免了panic
https://xargin.com/map-concurrent-throw/