Size: a a a

2020 June 03

DY

Dmitry Yaremenko in Go-go!
понял, спасибо
источник

zl

ziggy lucid in Go-go!
https://gist.github.com/ericlagergren/1e6ea402afc1727ff787
как-то не выглядит такое решение потокобезопасным или все нормально?
вроде как правильней было бы прокинуть наружу метод template.Execute, чтобы не возвращать указатель на шаблон, который в любой момент может измениться

поправьте, если не прав
источник

ВС

Владимир Столяров... in Go-go!
Тут кстати баг: берётся rlock, а отпускается простым unlock
источник

DP

Daniel Podolsky in Go-go!
тут есть ошибка
источник

zl

ziggy lucid in Go-go!
ошибки ладно уж, сама суть важна
возвращать указатели из-под мьютексов вроде как неправильно же?
источник

ВС

Владимир Столяров... in Go-go!
Так тут защищается map, а не шаблон
источник

ВС

Владимир Столяров... in Go-go!
Если не менять конкурентно значение под указателем, то норм
источник

zl

ziggy lucid in Go-go!
так тут пример, который отслеживает изменения файлов шаблонов на диске и перегружает их
гипотетически возможна гонка?
источник

zl

ziggy lucid in Go-go!
файл изменился, перегружается шаблон и в это же время тот же шаблон используется снаружи
источник

zl

ziggy lucid in Go-go!
сам я сделал так, но решил посмотреть как другие такую же задачу решали
источник

zl

ziggy lucid in Go-go!
какой вариант более правильный? может шаблоны потокобезопасны и я зря парюсь?
источник

zl

ziggy lucid in Go-go!
может подскажете готовые библиотеки под live-reload шаблонов
мне вот не нравится мьютекс - однопоточное по сути выходит же
источник

zl

ziggy lucid in Go-go!
или просто сменить обычный мьютекс на RW?
источник

AK

Anton Kucherov in Go-go!
ziggy lucid
https://gist.github.com/ericlagergren/1e6ea402afc1727ff787
как-то не выглядит такое решение потокобезопасным или все нормально?
вроде как правильней было бы прокинуть наружу метод template.Execute, чтобы не возвращать указатель на шаблон, который в любой момент может измениться

поправьте, если не прав
В доках написано:
Once parsed, a template may be executed safely in parallel, although if parallel executions share a Writer the output may be interleaved.
источник

zl

ziggy lucid in Go-go!
так требуется перепарсить, если файл изменится, а в это время шаблон вроде как может где-то исполняться
так-то понятно, что юзать можно в многопоток
источник

AK

Anton Kucherov in Go-go!
ziggy lucid
так требуется перепарсить, если файл изменится, а в это время шаблон вроде как может где-то исполняться
так-то понятно, что юзать можно в многопоток
А при изменении файла, там точно проверка и перезапись значений в старом указателе? Или может быть создание нового? 🤔
источник

zl

ziggy lucid in Go-go!
Anton Kucherov
А при изменении файла, там точно проверка и перезапись значений в старом указателе? Или может быть создание нового? 🤔
ну можно и дерево подсунуть, чтоб не менялся указатель на шаблон
источник
2020 June 04

AK

Anton Kucherov in Go-go!
ziggy lucid
ну можно и дерево подсунуть, чтоб не менялся указатель на шаблон
Не совсем понял что значит "дерево подсунуть".
Я имею ввиду, если при перепарсинге выполняется грубо говоря templates[name] = template.New(), то наверное такая рализация норм. Проблем быть не должно. Ведь в таком случае при изменении файла Get(name string) будет возвращать новый указатель.
источник

zl

ziggy lucid in Go-go!
Anton Kucherov
Не совсем понял что значит "дерево подсунуть".
Я имею ввиду, если при перепарсинге выполняется грубо говоря templates[name] = template.New(), то наверное такая рализация норм. Проблем быть не должно. Ведь в таком случае при изменении файла Get(name string) будет возвращать новый указатель.
вообще-то да, я невнимательно смотрел, там ниже как раз создается новый шаблон при перепарсинге
значит проблем с гонкой быть не должно
источник

Ч

Челoвек in Go-go!
Dmitry 🦆
Прервал изучение go, решил возобновить, и тут мне IDE показала проблему. Что она хочет?
Скачай Goland
источник