golang并发访问map
golang的map不是线程安全的,官方文档解释也给出了解释Why are map operations not defined to be atomic?。因此对于已经爬取过的url,不能直接使用map作标记。利用map加锁可以解决并发访问的问题,但是写锁也会导致无法读,怎么优雅的加锁是一个问题.
这个syncmap将map分片,利用bdkr将字符串hash到不同的map分片,这样一来,锁的粒度变小。 关于BDKR补充
golang的map不是线程安全的,官方文档解释也给出了解释Why are map operations not defined to be atomic?。因此对于已经爬取过的url,不能直接使用map作标记。利用map加锁可以解决并发访问的问题,但是写锁也会导致无法读,怎么优雅的加锁是一个问题.
这个syncmap将map分片,利用bdkr将字符串hash到不同的map分片,这样一来,锁的粒度变小。 关于BDKR补充