Vladimir
и лочишь только структуру которую нужно
Vladimir
stuct lockedMap {
sync.RWMutex
map[...]...
}
Vladimir
и посмотри на sync.Map
Alexei
или сразу sync.Map использовать
Alex
Я в одну структуру вставил две мапы. И для каждой из них просто добавил мютекс
Alexei
т.е. ты добавил два мьютекса в одну структуру, ага )))
Vladimir
Vladimir
если б такое было в API публичном я бы сделал фейспалм
Alex
type Peoples struct {
one map[string]string
two map[string]string
mutexOne sync.RWMutex
mutexTwo sync.RWMutex
}
Alexei
@Civiloid делай рукалицо )))
Vladimir
People - уже множественное
Vladimir
@rsaoskol сделай:
type SyncedMap struct {
sync.RWMutex
data map[string]string
}
type People struct {
one SyncedMap
two SyncedMap
}
Vladimir
тогда у тебя будет семантика:
People.one.Lock()
People.one.data["foo"] = "bar"
People.one.Unlock()
Vladimir
и это более логично и ожидаемо
Vladimir
или посмотри на sync.Map сразу
Alexei
я встречал в коде, когда просто, без структуры идут
var (
somevalue sometype
mutex sync.Mutex
)
интересно, а что лочится в данном случае?
Alexei
забыл добавить, что видел такое в пакете main
Anonymous
Vladimir
ага
Alexei
хм, странно, вроде там ничего колом не вставало, просто академический интерес, спасибо )))
Anonymous
Alexei
😂😂😂
Vladimir
Vladimir
вызываешь Lock - смотрим взял ли уже кто-то лок, если не взял - меняем состояние, отдаем управление
Vladimir
если взял - ждем пока не отпустят
Vladimir
там могут быть тайматуы на ожидания, но суть та же
Vladimir
от платформы зависят детали имплементации
Vladimir
поэтому сделав:
mutex1.Lock()
mutex1.Lock()
ты повесишь приложение
Vladimir
потому что вот
Vladimir
лок уже взяли, его никто не отпускал
Vladimir
точнее тредик повесишь
Alexei
да я понимаю и в моем представлении также, просто действительных вставаний не было, шуршит в продакшине 24/7, поэтому было немного удивительно
Vladimir
ну значит быстро отпускают локи что ты не замечаешь
Vladimir
попрофилируй мьютексы и увидишь
Alexei
может быть
Vladimir
https://rakyll.org/mutexprofile/
Alexei
да я уже уволился оттуда, нет доступа к коду и условий его выполнения )))
Vladimir
нууу
Vladimir
там могут и баги быть
Vladimir
и кто-нибудь где-нибудь мьютексы игнорирует просто напросто
Vladimir
увы частая проблема когда лок берется в одном месте, пишется в другом. Или пишется при взятом RLock'е
Alexei
это да, согласен
Oleg
Имеет ли смысл использовать REST подход в обычном приложении используя js ?
Aleksandr
Oleg
ну, я имел в виду хеловорлд подобные, небольшие приложения. Вопрос заключается именно в использовании PUT DELETE и тп.
Aleksandr
разверни. не понимаю, почему тебя должны PUT/DELETE беспокоить, тем более на hello world
Alexander
Если его никто другйо не будет разрабатывать и ты не планируешь его расширять, то делай как душе угодно
Oleg
Я просто смещаюсь в сторону вебдева, а именно в сторону vuejs(js) и столкнулся с тем, что в HTTP формах используется только GET и POST , что несколько меня обескуражило ибо сама философия REST мне очень понравилась ибо для каждого метода своё действие, а городить /post/delete/{ID} и /post/add/{ID} ну как-то не очень ... (
Aleksandr
Aleksandr
подписываешься на onSubmit, асинхронно дергаешь метод апи любым http методом
Aleksandr
ограничений нет
Co.In
REST конечно хорош, но в больших проектах могут возникнуть сложности. Особенно с кастомными экшенами вроде поиска, фильтров, форм с мультисущьностями. Которые не очень то укладываются в концепцию. Если вам только CRUDL нужен, тогда юзайте REST. Мы изначально выбрали его, но потом он мутировал что-то иное что сложно назвать RESTом
Oleg
Oleg
ну, меня больше сейчас интересует современный подход к построению веб приложений, если где-то есть книга ,я с радостью почитаю. На англйском - не проблема.
Aleksandr
Aleksandr
в контексте го
Oleg
почти всё я там читал уже, ну ок, гугл не отменяли ещё, пороюсь там, спасибо. Просто если брать конкретно книги про GO , то сторона клиента в основном рассматривается весьма поверхностно, за исключением пожалуй одной книги LvlUpYouWebAppWIthGo, там неплохая база, но хотелось-бы большего.
Doublegrey
shtein.ddns.net:8080
Doublegrey
Slava
за такое можно и бан схлопотать
Anonymous
баньте к херам! тем более что сайт перестал работать
Niko
Ты наверняка себе DDos организовал, скинув сюда ссылку. Все начали заходить на сайт, делиться ссылкой с друзьями... Так сайт и лег
朝の日差し ✙
Хабраэффект
Alexander
тут 1000 селовек всего, даже если представить что все попрели, то сайт со статьями без всяких пперсонализированных выборок вряд-ли ляжет
Alexander
с условием что кеширование какое-нибудь имеется
Alexander
но без кеша по-моему сейчас никто не делает
Alexey
Без кэша вряд ли бы тоже лег)
Alexander
Странное утверждение насчёт кеша
Alexander
Alexander
Без него вполне можно
Alexander
а смысл ?
Alexander
се
Alexander
Базы неплохо кешируют если мощности позволяют
Alexander
Зачем городить лишний слой?
Alexander
Alexander
Любые нормальные базы имеют продвинутые кеши в памяти под капотом
Alexander
))