Похожие чаты

I’ve been exploring channels and playing around with some basic

edge cases. I understand for a successful transaction to occur in a channel, A sender and a receiver must be available, for a given “message”.

Why does the following operation not result in a deadlock?


package main

func main() {
messages := make(chan string)

// A go routine that sends to a channel
go func() {
messages <- "I am sending a message."
}()

// Main routine has no receiver.
// No compilation or runtime error.
// Why doesn't it deadlock?
}

11 ответов

21 просмотр

because your main goroutine doesn't wait, returns and the program is terminated

so if I understand correctly deadlock will only occur if you try to access the channel without goroutines because the channel has no buffer.

jeffotoni
so if I understand correctly deadlock will only oc...

package main func main() { messages := make(chan string) // A go routine that sends to a channel //go func() { messages <- "I am sending a message." //}() }

jeffotoni
package main func main() { messages := make(cha...

if you make a buffered channel it will work messages := make(chan string, 1)

Justin-K Автор вопроса
jeffotoni
if you make a buffered channel it will work messag...

Yes, I did play with buffer sizes. Unless I misunderstood, I read somewhere that buffer channels have their time and place. To limit their use and rather keep the code “tightly coupled” for each successful channel transaction to occur (or something). Is that a valid point?

Justin K
Yes, I did play with buffer sizes. Unless I misund...

When using buffering there is no need to use goroutine for example. When we don't have a buffer on the channel, the use of goroutines is mandatory.

Justin-K Автор вопроса
jeffotoni
When using buffering there is no need to use gorou...

Thanks, Yes, I understand that bit but the point I wrote just earlier, is that a valid consideration at all? That to use buffer only if the solution really requires of the channel to hold a few messages?

Justin K
Thanks, Yes, I understand that bit but the point I...

Yes, adaptation by need and problems we know the amount to be shared.

Похожие вопросы

Обсуждают сегодня

Ready for some fun AND a chance to win TKO Tokens? Join us for exciting minigames in our Telegram group! 🕒 Don’t miss out—games start on today 25 October 2024, at 8 PM! Ge...
Milkyway | Tokocrypto
255
Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
is that okay?
Samurai 🇯🇵
21
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
How about the project bro Likes the community not that active ?
🅿️abby_FX
19
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Здравствуйте товарищи. А где вы смотрите маркеры/фенотипы клеток, чтобы подобрать антитело для задачи? Есть какой-то ресурс/база данных, или всё ручками по статьям? Мне нужно ...
Abruhmed
14
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Карта сайта