🐳хотел высраться в понеделньик, но сгорела джопа на работе + какието проблемы с интернетом я два дня легаси говно не мог в докере запустить в итоге обновил докер + ночью наладился инторнет 🐳
HERE WE GO гошные фичи которые потыкал
🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟
🐝 context 🐝
как говорится - хз загугли
- давайте начнем с общего представления о канкаренси в го, в отличии от руби "гыгы-гага 5 тредов тыкать базу запустим будет быстро" (да знаю что еще есть акторы, файберы, ну кому они нужны, камон).
Пример вы делаете 3 походов вкудато сразу, будь то апи или базка или очередь, но вам в зависимости от того где вам сразу ответят надо отменить остальное, или просто не тыкать слишком часто апишку. Контекст позволяет остановить выполнение кода, при каких либо условиях. Создаете контекст, передаете его в функцию/горутину с аргументом тайм либо с аргументом кенсел, если отмена вызывается из вне. Выглядит все очевидно, правда примеры во многих туториалах с селектом(об этом позже в других постах) может ввести в заблуждение представьте что селекта вообще нет, там он для наглядности. Есть некие правила от чего вкуда контекст наследуется, из background все остальные, а так же можно передавать значения, но не желательно.
🛎WaitGroup(sync)🛎
не помню что там еще в sync пакете, рассмотрим WaitGroup
- может применяться в противоположной логике, для аналогии транзакции в activ record, но не только касается бд
Пример, все теже 3 похода вкудато даже 3 вызова гоурутины которые считают что то тоже подходят в этом примере.
WaitGroup это счетчик операций(завершенных!) - создаете счетчик waitgroup.Add(3)
каждый вызов/поход дергаем через гоурутину это делается просто добавлением go перед вызовом функции и внутри добавляем waitgroup.Done(), значит что наша программа будет ждать пока счетчик не станет 3 и мы гарантированно соберем все данные.
📤 сегодня-завтра все будет в гитхабе, я делаю не правильно - мне надо это все потыкать для собесов, всмысле антипатерны и ворст практис.
Post #43
187
- 🔥 3
- ❤🔥 1