Não parece que o lru.Cache é seguro para acesso simultâneo. Isso está correto? Em caso afirmativo, você se oporia a eu adicionar um mutex?
Eu sou novo na contribuição de código aberto e isso parece ser uma vitória fácil.
Quais seriam as desvantagens de substituir o mapa atual pelo novo sync.Map?
Oi,
Espero não estar sendo redundante em responder, mas percebo que este tópico ficou um pouco em silêncio.
Ao procurar em groupcache.go, o lru é usado apenas de maneira segura para threads. Assim, a LRU deixa sua política de bloqueio para o código de chamada. Eu acho que isso é razoável, porque então os bloqueios duplos podem ser evitados - não há dúvida de quem deve implementar o bloqueio ou para onde ele deve ir no código.
Há alguns recursos no sync.Map:
https://www.youtube.com/watch?v=C1EtfDnsdDs
https://medium.com/@deckarep/the-new-kid-in-town-gos-sync-map-de24a6bf7c2c
Então, acho que a pergunta é: você tem um problema de contenção de cache medido no groupcache? :-)
Saúde,
Nada redundante, e seus comentários fazem sentido. Eu estou satisfeito. Obrigada!
Comentários muito úteis
Oi,
Espero não estar sendo redundante em responder, mas percebo que este tópico ficou um pouco em silêncio.
Ao procurar em groupcache.go, o lru é usado apenas de maneira segura para threads. Assim, a LRU deixa sua política de bloqueio para o código de chamada. Eu acho que isso é razoável, porque então os bloqueios duplos podem ser evitados - não há dúvida de quem deve implementar o bloqueio ou para onde ele deve ir no código.
Há alguns recursos no sync.Map:
https://www.youtube.com/watch?v=C1EtfDnsdDs
https://medium.com/@deckarep/the-new-kid-in-town-gos-sync-map-de24a6bf7c2c
Então, acho que a pergunta é: você tem um problema de contenção de cache medido no groupcache? :-)
Saúde,