英文:
In Go, can we synchronize each key of a map using a lock per key?
问题
在Go语言中,我们可以使用每个键一个锁来同步map吗?是否总是需要对整个map进行全局锁定?文档中提到,对map的任何访问都不是线程安全的。但是,如果一个键存在,那么可以单独对其进行锁定吗?
英文:
In Go, can we synchronize each key of a map using a lock per key?
Is map level global lock always required?
The documentation says that any access to map is not thread safe. But if a key exists, then can it be locked individually?
答案1
得分: 1
并不完全准确,但如果你只是从地图上读取指针并修改引用对象,那么你并没有修改地图本身。
英文:
Not exactly, but if you are only reading pointers off a map and modifying the referents, then you aren't modifying the map itself.
答案2
得分: 1
这是你想要的简单实现:mapmutex。
基本上,互斥锁被用来保护地图,地图中的每个项目都像一个“锁”一样使用。
英文:
This is a simple implementation of what you want: mapmutex.
Basically, a mutex is used to guard the map and each item in the map is used like a 'lock'.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论