Знаю что я уже кучу раз спросил об этом но один фиг не могу вкурить потокобезопасность.
Код:
import (
"html/template"
"sync"
)
var rw = &sync.RWMutex{}
var st = map[string]*template.Template{}
func Get(patch string) (*template.Template, bool) {
rw.RLock()
defer rw.RUnlock()
q, w := st[patch]
return q, w
}
func set(patch string, value *template.Template) {
rw.Lock()
defer rw.Unlock()
st[patch] = value
}
Функция set работает в 1 поток перед запуском веб сервера, функция Get уже "ездит" по кучи рутин. По сути карта хранит скомпилиные html шаблоны.
Ход моих мыслей:
map потокобезопасен
*template.Template не безопасен ведь я работаю с ссылкой (что делать?)