Junior — Middle
Каналдан окуу операциясы буферсиз мүмкүнбү?
sobes.tech AI
AIден жооп
Goда, каналдан (chan) буферсиз окуу операциясы гана канал буферленсе гана мүмкүн. Эгер канал буферсиз (өлчөмү 0) болсо, окуу операциясы блоктолот, чейин каналга маані жөнөтүлөт.
Ошондуктан:
- Бушлай окуу үчүн буферсиз, канал менен блоктоло турган эмес операцияларды колдонуу керек (мисалы,
selectмененdefaultаркылуу), бирок бул маалыматтарды алуу кепилденбейт. - Эгер канал буферсиз болсо, окуу дайыма блоктолот, кимдир бирөө маалымат жөнөтмөйүнчө.
Б buffer менен каналдын мисалы:
ch := make(chan int, 1) // 1 элементтүү буфер
ch <- 42 // маанини жөнөтүү
val := <-ch // блоктоло турган эмес окуу
Эгер канал буферсиз болсо, окуу жана жазуу түздөн-түз горутиндердин ортосунда синхрондоштурат.