cch123 / blog_comment

comments of xargin.com
8 stars 0 forks source link

map 并发崩溃一例 #140

Open cch123 opened 4 years ago

cch123 commented 4 years ago

https://xargin.com/map-concurrent-throw/

chentaihan commented 3 years ago

在发起rpc的时候设置超时,wait不设置超时,这样问题是不是就不存在了

cch123 commented 3 years ago

@chentaihan ,是的

sunnyingit commented 3 years ago

在goroutine加lock非常影响并发,特别是发起rpc之前就加锁,这基本上导致了rpc 请求无法并发发起,这应该也是这段程序的问题。

shengzhch commented 3 years ago

m.Lock()针对的是写map,rpc可以先调用。可以在for循环外定义一个flag,函数返回时flag设为true,go func对map写入时判断flag。这样做抛弃了一部分超时的rpc响应,但是避免了panic