Adding to a full buffered channel will not cause a crash. It can deadlock just as the unbuffered can - but the deadlocks can be harder to diagnose.
> On Apr 13, 2022, at 3:40 AM, Zhaoxun Yan <yan.zhao...@gmail.com> wrote: > > > Since I found if inserting into a buffered channel could cause a crash if it > is full already > ( now I only use unbuffered channels in work) > https://groups.google.com/g/golang-nuts/c/U8lz6noKkuA > > package main > > var c = make(chan int, 1) > > func main() { > > c <- 1 > c <- 2 //fatal error: all goroutines are asleep - deadlock! > c <- 3 > > } > > I made up a work around that just dumps the new message if the buffer is full: > > package main > > import ( > "fmt" > "sync" > ) > > type ChanInt struct{ > Ch chan int > Mu *sync.Mutex > } > > var c = ChanInt{make(chan int, 1), new(sync.Mutex)} > > func (ch ChanInt) Fill(k int){ > ch.Mu.Lock() > defer ch.Mu.Unlock() > > if len(ch.Ch) < cap(ch.Ch){ > ch.Ch <- k > } > } > > func main() { > > fmt.Println("Channel Status: ",len(c.Ch), cap(c.Ch)) > c.Fill(5) > fmt.Println("Channel Status: ", len(c.Ch), cap(c.Ch)) > fmt.Println("get one out of Channel:", <-c.Ch) > fmt.Println("Channel Status: ", len(c.Ch), cap(c.Ch)) > > c.Fill(6) > // c.Ch <- 7 //fatal error: all goroutines are asleep - deadlock! > c.Fill(7) > fmt.Println("Channel Status: ", len(c.Ch), cap(c.Ch)) > fmt.Println("get one out of Channel:", <-c.Ch) > } > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/9ca5c13b-7797-4d64-bc2c-1f1ff7281168n%40googlegroups.com. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/4BB13A1C-741D-4047-B353-D5602F771F58%40ix.netcom.com.