Junior — Middle
Ինչպե՞ս է իրականացվում տվյալների փոխանցումը ոչ բուֆերային ալիքով։
sobes.tech AI
Պատասխան AI-ից
Go լեզվում, անբեռնված ալիք (անբեռնված ալիք) ապահովում է տվյալների սինխրոն փոխանցում գորուտինների միջև: Դա նշանակում է, որ արժեքի ուղարկումը ալիքին բլոկվում է մինչև մյուս գորուտինը ընդունի այդ արժեքը ալիքից, և հակառակը՝ ընդունումը բլոկվում է մինչև արժեքը լինի ընթերցելու համար:
Այսպիսով, անբեռնված ալիքով տվյալների փոխանցումը տեղի է ունենում ուղարկողի և ստացողի սինխրոնիզացիայով, ինչը երաշխավորում է տվյալների փոխանակումը առանց միջնորդ պահեստավորման:
Օրինակ՝
ch := make(chan int) // անբեռնված ալիք
go func() {
ch <- 42 // ուղարկումը բլոկվում է մինչև որ մեկը կարդա
}()
value := <-ch // ընդունումը բլոկում է մինչև որ արժեքը հայտնվի
fmt.Println(value) // կարտածի 42
Այս օրինակով, գորուտին ուղարկում է թիվ ալիքին և բլոկվում մինչև գլխավոր գորուտինը կարդա այդ թիվը։