Size: a a a

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

2021 April 25

D

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

D

Dmitry in Golang Developers — русскоговорящее сообщество
Запись идёт в буфер и горутина продолжает работу. А когда там уж прочитают дело третье
источник

A

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

D

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

A

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

 message := make(chan string, 1)

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

   fmt.Println(<-message)
   fmt.Println(<-message)
   fmt.Println(<-message)
   fmt.Println(<-message)
}
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
А вы слип сделайте перед чтением в 10 сек
источник

D

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

D

Dmitry in Golang Developers — русскоговорящее сообщество
И поставьте буфер 2
источник

A

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

AS

Alexander Satirskiy in Golang Developers — русскоговорящее сообщество
Мне кажется, что, если быть точным, сначала блокируется горутина main на чтении, а потом запускается горутина.
источник

A

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

D

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

D

Dmitry in Golang Developers — русскоговорящее сообщество
И тайминг вам это покажет
источник

A

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

 message := make(chan string, 2)

 go func() {
   message <- "1"
   time.Sleep(time.Second* 5)
   message <- "2"
   time.Sleep(time.Second* 5)
   message <- "3"
   time.Sleep(time.Second* 5)
   message <- "4"
 }()

   fmt.Println(<-message)
   fmt.Println(<-message)
   fmt.Println(<-message)
   fmt.Println(<-message)
}
источник

A

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

D

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

D

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

D

Dmitry in Golang Developers — русскоговорящее сообщество
А тайминги после каждой операции записи и чтения
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
И посмотрите на время когда что происходит
источник

D

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