Size: a a a

2020 July 23

ЕО

Евгений Омельченко... in Go-go!
pragus
да. клиентский код лучше знает в какие моменты надо синхронизировать доступ.
Знал бы, если бы перестройка мапы была бы прозрачной
источник

J

Je in Go-go!
вот тред сейф кэш на локах
https://github.com/patrickmn/go-cache
источник

J

Je in Go-go!
предполагается, что кэш это глобальный объект конечно, и не будет копироваться
источник

p

pragus in Go-go!
Je
и хорошо, если он это делает) что-то почти все реализации cache в памяти так или иначе thread safe делают, не полагаясь на клиентский код
клиентский код - это код, который с этой мапой напрямую работает. так что любая реализация кеша на базе штатной мапы - это и есть клиентский код.
источник

J

Je in Go-go!
ну вот у меня клиентский код доступ к этой мапе из десятка горутин? как я должен синхронизироваться?
источник

J

Je in Go-go!
наверное, появятся сразу два метода Set/Get?
источник

DP

Daniel Podolsky in Go-go!
Или не появятся
источник

p

pragus in Go-go!
Je
наверное, появятся сразу два метода Set/Get?
Set/SetLocked, Get/GetLocked
источник

p

pragus in Go-go!
Je
ну вот у меня клиентский код доступ к этой мапе из десятка горутин? как я должен синхронизироваться?
вот есть type Foo { A, B, C *int }, мапа map[string]*Foo. Надо ли нам её лочить если мы модифицируем Foo.A ?
источник

ЕО

Евгений Омельченко... in Go-go!
pragus
вот есть type Foo { A, B, C *int }, мапа map[string]*Foo. Надо ли нам её лочить если мы модифицируем Foo.A ?
Но модификация Foo и не требует Set
источник

p

pragus in Go-go!
Евгений Омельченко
Но модификация Foo и не требует Set
угу.
источник

ЕО

Евгений Омельченко... in Go-go!
Set не требует лока только если заранее известно, что во время его вызова никто больше не читает и не пишет
источник

J

Je in Go-go!
а RLock не для этого нужен?
источник

ЕО

Евгений Омельченко... in Go-go!
Другое дело, что мапа может паком модифицироваться и лучше взять один лок
источник

p

pragus in Go-go!
Je
а RLock не для этого нужен?
зачем?
источник

J

Je in Go-go!
да-да, и пошло изобретательство, а далее планировщик локов сделаем) а начиналось все с того, что некий изобретатель покрыл все в кэш и начал кичиться тем, что Redis моветон
источник

J

Je in Go-go!
конечно мапа это плохой кеш, и тормозит, по-моему какие-то создатели DB на Go с этим столкнулись, не могу сейчас найти кто
источник

DP

Daniel Podolsky in Go-go!
Батхерт - это грех
источник

p

pragus in Go-go!
Je
конечно мапа это плохой кеш, и тормозит, по-моему какие-то создатели DB на Go с этим столкнулись, не могу сейчас найти кто
discord
источник

p

pragus in Go-go!
Je
конечно мапа это плохой кеш, и тормозит, по-моему какие-то создатели DB на Go с этим столкнулись, не могу сейчас найти кто
мапа - это вообще не кеш :)
источник