Size: a a a

Golang Developers — русскоговорящее сообщество

2021 April 25

EU

Egor Urvanov in Golang Developers — русскоговорящее сообщество
Конечная цель сделать cascade proxy. В httpprxy не ясно как это сделать. Здесь — в процессе.
источник

EU

Egor Urvanov in Golang Developers — русскоговорящее сообщество
Но тоже совсем ясно, почему есть доступ только к tcp
источник

A

Alexander in Golang Developers — русскоговорящее сообщество
func main() {

 message := make(chan string)

 go func() {
   message <- "1"
   message <- "2"
   message <- "3"
 }()

 fmt.Println(<-message)
 fmt.Println(<-message)
 fmt.Println(<-message)
}

Не хвататет теории объяснить почему это работает...
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
В почему не должно по-вашему ?
источник

A

Alexander in Golang Developers — русскоговорящее сообщество
как минимум потом потому что канал  без емкости
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
Он не без емкости. Он без буфера
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
Т.е по сути синхронный
источник

A

Alexander in Golang Developers — русскоговорящее сообщество
ну а какая емкость такого канала ?
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
У канала нет понятия емкость. Есть буфер
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
Буфер данного канала 0
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
А это значит что он синхронный. Запись или чтение из синхронного канала являются блокирующей операцией
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
Сначала запускается горутина которая пишет в канал сообщение. И на этом горутина блокируется пока кто-то не прочитает из канала
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
Потом идёт чтение из канала в основной горутине и она тоже блокируется потому что ей нужно прочитать ещё раз. И она будет ждать пока туда кто-то не запишет
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
Ну и так 3 итерации.
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
Хотя по блокировкам могу ошибаться. Зависит от шедулера что он там ждать будет. Чтение или запись.
источник

A

Alexander in Golang Developers — русскоговорящее сообщество
ну понятно но ва вид код выглядет странно)
источник

A

Alexander in Golang Developers — русскоговорящее сообщество
еще особено когда добавляешь буфер и все так же работает..
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
Это по началу. Потом привыкаешь когда постигаешь тонкости планировщика го
источник

A

Alexander in Golang Developers — русскоговорящее сообщество
ну работает потому что те же блокировки и размер буфера не важен получается
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
Важен. Ещё и как
источник