Ler de uma tabela hash enquanto há atualizações acontecendo não é thread-safe.
Ah, entendo o que você quer dizer, devemos mover a chamada de @lock.synchronise
para get
vez disso?
Não tenho certeza se precisaríamos mais dele em set
depois disso?
Você precisa disso em ambos os métodos porque está lendo e gravando em @constants
. Você não pode ter acesso sincronizado à mesma tabela hash em nenhuma sessão. Operações somente leitura não são seguras com gravações simultâneas.
Tudo bem, eu mesclei uma alteração para envolver @constants
em uma sincronização.
Obrigado, @ioquatix pela inspiração!