you are better than you think

golang并发访问map

· by thur · Read in about 1 min · (15 Words)
golang map concurrent access

golang的map不是线程安全的,官方文档解释也给出了解释Why are map operations not defined to be atomic?。因此对于已经爬取过的url,不能直接使用map作标记。利用map加锁可以解决并发访问的问题,但是写锁也会导致无法读,怎么优雅的加锁是一个问题.

这个syncmap将map分片,利用bdkr将字符串hash到不同的map分片,这样一来,锁的粒度变小。 关于BDKR补充

参考资料

  1. http://liyangliang.me/posts/2015/01/concurrent-safe-map-in-golang/
  2. https://www.byvoid.com/zhs/blog/string-hash-compare
  3. http://www.partow.net/programming/hashfunctions/#RSHashFunction

Comments