Ilya
Через него останавливай горутины
Ilya
Он для этого в том числе и создан
Anonymous
А как можно останавливать горутины?
Mike
вот контекстом судя по докам
Ilya
Return :)
Mike
пошел читать короч, спс
Ilya
Пожалуйста, заходи еще :)
Mike
а слушай, можно же проще
Mike
я могу просто закрывать канал
Mike
или это приведет к ошибкам?
Mike
то есть вопрос вот в чем, что происходит с теми, кто ждет инфы от канала, если он закрылся
Anonymous
ничего
Mike
ничего в смысле они так и висят, в смысле они сворачиваются, в смысле они падают?
Илья
никто сам не падает
Илья
https://dave.cheney.net/2014/03/19/channel-axioms
Ilya
Можно и просто закрывать, но я бы попрактиковался в использовании контекста - будет полезно в будущем.
Mike
ну у меня есть канал остановки
Mike
он просто во внешней логике
Mike
ну я понял в общем-то
Mike
дальше сам уже буду думать, как бы организовать по-красивее
Anonymous
Кстати, вот так можно останавливать горутины https://play.golang.org/p/BFRPvMnfGh
Anonymous
а что не используешь в коде sync.WaitGroup?
Это простой пример, скорее даже для напоминание для меня waitGroup там ни к чему
Anton
просто лишенго кода много для понимания тяжело, wg проще будет код и можно только то что хочешь показать хорошо выделить
engelbart
А есть такой же пример с контекстами
Anonymous
http://guzalexander.com/2017/05/31/gracefully-exit-server-in-go.html и https://pastebin.com/ZgpBBCpt
engelbart
Спасибо!
Mike
хах, я в итоге совсем по-другому сделал, у меня очередь, в которую если влезает, горутина запускается, а если нет — даже не запускается
Mike
но я словил классный эксепшн, который пока не понимаю, что значит
Mike
там просто насрано в стектрейсе причем столько, что не лезет в терминал, полностью его затирает с самого начала
Mike
про это есть issue на гитхабе, но там сказали в итоге забить и делать иначе
Mike
типа в го это не фиксили пока)
Mike
Илья
м?
Илья
что за issue?
Mike
https://github.com/golang/go/issues/16079
Mike
вот у меня такой же трейс как у того чувака
Anonymous
go version?
Mike
1.8, но ошибка такая же
Mike
1.8.1 точнее
Anonymous
Хм, значит не успели или не захотели править))
Anonymous
Пишут, что нельзя выделить столько портов. 65к лимит. У вас такая же проблема?
Mike
я специально сделал очередь чтобы больше 500 коннектов одновременно открыто не было
Mike
прям очередь, в которую кладется айдишник рандомный, и запускается горутина, которая делает коннект, закрывает тело, после чего в канал свой айдишник пуляет и он из очереди удаляется
Mike
и если очередь кончилась, новая горутина даже не запускается
Mike
так что НУ ЕСЛИ Я НЕ ИДИОТ то больше 500 портов открыто быть не должно
Илья
запусти с -race
Mike
причем она успевает сделать что-то типа 7к запросов прежде чем упасть
Anonymous
netstat'ом гляньте чтобы убедиться
Anton 🇺🇦
какой аналог sleep() есть в го?
Илья
проверь на идиота :)
Илья
и netstat
Mike
лол, а я обычно делаю <- time.After(time.Second * 5)
Anton 🇺🇦
time.Sleep
мили секунды?
Anonymous
мили секунды?
Ноуп, time.Duration
Anton 🇺🇦
Ноуп, time.Duration
это еще что
Anonymous
это еще что
man time.Duration
Илья
это еще что
https://golang.org/pkg/time/
Anonymous
https://golang.org/pkg/time/#Duration
Anton 🇺🇦
https://golang.org/pkg/time/
я смотрю как раз, но еще не въехал
Anonymous
Наносекунды короч под капотом
Anton 🇺🇦
горю с велосипедов
Илья
я горю в людей, которые даже golang tour не осиливают :(
engelbart
https://medium.com/@matryer/stopping-goroutines-golang-1bf28799c1cb
Вот первый метод понравился.
Anton 🇺🇦
я горю в людей, которые даже golang tour не осиливают :(
зочем, когда есть спизженные с сети книги
Anonymous
Господин пейрат.
Anonymous
Йохохо, и бутылка смузи
Мерль
[last news] Why I’m So Frustrated with Go
Nix
всем привет, подскажите как на go это будет выглядеть $exampletest = substr($example, 0, $test);
Alexei
exampletest := example[:test] если я правильно понял
Nix
спасибо
I
Тут люди про взятие подстроки спрашивают, а я парюсь, что простые вопросы будут и отправят гуглить, поэтому и гуглю сразу)
engelbart
Некоторые машины на тротуар ставят, не повод же тоже самое делать
Мерль
exampletest := example[:test] если я правильно понял
Идея не очень. Если есть в строке мультибайтовые символы, то результат похерится