Vladimir
и лочишь только структуру которую нужно
Vladimir
stuct lockedMap { sync.RWMutex map[...]... }
Vladimir
и посмотри на sync.Map
Alexei
или сразу sync.Map использовать
Alex
Я в одну структуру вставил две мапы. И для каждой из них просто добавил мютекс
Alexei
т.е. ты добавил два мьютекса в одну структуру, ага )))
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
Vladimir
ага
Anonymous
забыл добавить, что видел такое в пакете main
Если в main(), то, думаю, там лочится вся прога, пока не поступит оплата от заказчика в полном объёме.
Alexei
хм, странно, вроде там ничего колом не вставало, просто академический интерес, спасибо )))
Alexei
😂😂😂
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
это да, согласен
Anonymous
попрофилируй мьютексы и увидишь
Достаточно заглянуть, что делается между lock и unlock мутекса ))
Oleg
Имеет ли смысл использовать REST подход в обычном приложении используя js ?
Aleksandr
Имеет ли смысл использовать REST подход в обычном приложении используя js ?
а что, rest используют в необычных приложениях? или как понимать вопрос?
Oleg
ну, я имел в виду хеловорлд подобные, небольшие приложения. Вопрос заключается именно в использовании PUT DELETE и тп.
Aleksandr
разверни. не понимаю, почему тебя должны PUT/DELETE беспокоить, тем более на hello world
Alexander
Если его никто другйо не будет разрабатывать и ты не планируешь его расширять, то делай как душе угодно
Oleg
Я просто смещаюсь в сторону вебдева, а именно в сторону vuejs(js) и столкнулся с тем, что в HTTP формах используется только GET и POST , что несколько меня обескуражило ибо сама философия REST мне очень понравилась ибо для каждого метода своё действие, а городить /post/delete/{ID} и /post/add/{ID} ну как-то не очень ... (
Aleksandr
подписываешься на onSubmit, асинхронно дергаешь метод апи любым http методом
Aleksandr
ограничений нет
Co.In
REST конечно хорош, но в больших проектах могут возникнуть сложности. Особенно с кастомными экшенами вроде поиска, фильтров, форм с мультисущьностями. Которые не очень то укладываются в концепцию. Если вам только CRUDL нужен, тогда юзайте REST. Мы изначально выбрали его, но потом он мутировал что-то иное что сложно назвать RESTом
Oleg
подписываешься на onSubmit, асинхронно дергаешь метод апи любым http методом
понял, спасибо. В любом случае прийдёться дергать определённые скрипты .
Oleg
ну, меня больше сейчас интересует современный подход к построению веб приложений, если где-то есть книга ,я с радостью почитаю. На англйском - не проблема.
Aleksandr
в контексте го
Oleg
почти всё я там читал уже, ну ок, гугл не отменяли ещё, пороюсь там, спасибо. Просто если брать конкретно книги про GO , то сторона клиента в основном рассматривается весьма поверхностно, за исключением пожалуй одной книги LvlUpYouWebAppWIthGo, там неплохая база, но хотелось-бы большего.
Doublegrey
shtein.ddns.net:8080
Aleksandr
shtein.ddns.net:8080
че ты все спамишь своим сайтом?
Slava
за такое можно и бан схлопотать
Anonymous
баньте к херам! тем более что сайт перестал работать
Niko
Ты наверняка себе DDos организовал, скинув сюда ссылку. Все начали заходить на сайт, делиться ссылкой с друзьями... Так сайт и лег
朝の日差し ✙
Хабраэффект
Alexander
тут 1000 селовек всего, даже если представить что все попрели, то сайт со статьями без всяких пперсонализированных выборок вряд-ли ляжет
Alexander
с условием что кеширование какое-нибудь имеется
Alexander
но без кеша по-моему сейчас никто не делает
Alexey
Без кэша вряд ли бы тоже лег)
Alexander
Странное утверждение насчёт кеша
Alexander
Без него вполне можно
Alexander
а смысл ?
Alexander
се
Alexander
Базы неплохо кешируют если мощности позволяют
Alexander
Зачем городить лишний слой?
Alexander
Любые нормальные базы имеют продвинутые кеши в памяти под капотом
Alexander
))