Size: a a a

2020 June 13

VK

Viktor Kondratiuk in Go-go!
Jefferson
Всем привет. Подскажите, что не так с кодом?
https://pastebin.com/6FhKuGuj
wg.Wait() ждёт бесконечно почему-то
У тебя вызывается CheckingThread(ch)?
источник

J

Jefferson in Go-go!
источник

VK

Viktor Kondratiuk in Go-go!
Ты выше передаёшь в канал значение, а из него никто не читает.
источник

VK

Viktor Kondratiuk in Go-go!
Будешь виснуть на 59 строке
источник

VK

Viktor Kondratiuk in Go-go!
Добавь лог что бы проверить.
источник

@

@mr_tron in Go-go!
Ivan
Может на стэке, может на хипе, смотря как напишешь
нет. память на стэке не умеет выделяться динамически без роста этого самого стэка. а растёт он только в момент вызова новой функции (а в момент завершения чистится)
источник

@

@mr_tron in Go-go!
это легко проверить если посмотреть ассемблерный код который генерится компилятором
источник

J

Jefferson in Go-go!
Сообщение Wait выводится в терминал, в горутине всё читается, отрабатывает. Когда достингнем лимита - должно вывестись сообщение Success, но оно не выводится, хотя лимита достигает
источник

@

@mr_tron in Go-go!
Валентин Хомутенко
Как в go принято делать с переменными внутри цикла — объявлять снаружи или делать := внутри?

https://tour.golang.org/moretypes/23

var word string
var count int
var ok bool

for i := range words {
 word = words[i]
 count, ok = wordCount[word]
 if !ok {
  count = 0
 }
 count++
 wordCount[word] = count
}


vs

for i := range words {
 word := words[i]
 count, ok := wordCount[word]
 if !ok {
  count = 0
 }
 count++
 wordCount[word] = count
}
собственно вот эти два куска кода генерируют одинаковый ассемблер
источник

@

@mr_tron in Go-go!
можно проверить здесь - https://go.godbolt.org/
источник

@

@mr_tron in Go-go!
источник

@

@mr_tron in Go-go!
а вот их результат компиляции
источник

@

@mr_tron in Go-go!
@mr_tron
нет. память на стэке не умеет выделяться динамически без роста этого самого стэка. а растёт он только в момент вызова новой функции (а в момент завершения чистится)
фиксед. тут была опечатка. назвал стэк хипом
источник

ВХ

Валентин Хомутенко... in Go-go!
@mr_tron
можно проверить здесь - https://go.godbolt.org/
ого, спасибо, полезно
источник

I

Ivan in Go-go!
@mr_tron
нет. память на стэке не умеет выделяться динамически без роста этого самого стэка. а растёт он только в момент вызова новой функции (а в момент завершения чистится)
Да, я имел в виду, что если у нас цикл из ста итераций внутри которого мы объявляем переменную (:=), то на стэке выделиться место под 100 переменных. Непонятно что будет если количество итераций заранее не известно, сейчас на плейграунде накидаю, проверю.
источник

AR

A R in Go-go!
Ivan
Да, я имел в виду, что если у нас цикл из ста итераций внутри которого мы объявляем переменную (:=), то на стэке выделиться место под 100 переменных. Непонятно что будет если количество итераций заранее не известно, сейчас на плейграунде накидаю, проверю.
А компилятор не оптимизирует это? Что-то вроде такого, чтобы выделялось место не сто переменных, а место под одну, но вначале цикла обнуляя её?
источник

I

Ivan in Go-go!
A R
А компилятор не оптимизирует это? Что-то вроде такого, чтобы выделялось место не сто переменных, а место под одну, но вначале цикла обнуляя её?
Когда я последний раз проверял, не оптимизировало, но выше скинули ассемблер, похоже теперь оптимизирует
источник

@

@mr_tron in Go-go!
Ivan
Да, я имел в виду, что если у нас цикл из ста итераций внутри которого мы объявляем переменную (:=), то на стэке выделиться место под 100 переменных. Непонятно что будет если количество итераций заранее не известно, сейчас на плейграунде накидаю, проверю.
Господи, ну конечно оно так не делает и никогда не делало. Это было бы адским мультипликатором потребления памяти
источник

S

Sergey in Go-go!
Ivan
Да, я имел в виду, что если у нас цикл из ста итераций внутри которого мы объявляем переменную (:=), то на стэке выделиться место под 100 переменных. Непонятно что будет если количество итераций заранее не известно, сейчас на плейграунде накидаю, проверю.
А схренали их там выделится место под 100 переменных, если они в цикле и за пределы цикла не выходят? Область видимости никто не отменял.
источник

I

Ivan in Go-go!
Sergey
А схренали их там выделится место под 100 переменных, если они в цикле и за пределы цикла не выходят? Область видимости никто не отменял.
https://play.golang.org/p/kD3BfYOyaU7
Может я неправильно интерпретирую результат такого кода?
источник