Deadlock - All goroutines are asleep
Deadlock -> kondisi dimana go routine saling tunggu -> alhasil tidak ada go routine yang berjalan.
Contoh Kasus #1
Jika channel in (pengirim) di inisisasi terlebih dahulu dan channel out (penerima) di inisiasi setelah channel in -> deadlock -> karena belum ada penerimanya.
Channel in dan channel out harus berjalan bersama -> caranya salah satu di inisiasi terlebih dahulu dan yang pertama di inisiasi dimasukkan ke dalam go routine.
Program #1
package main
import "fmt"
func main() {
ch := make(chan int)
// channel in (pengirim)
ch <- 1
// channel out (penerima)
go func() {
result := <- ch
fmt.Println(result)
}()
}Program #2
Program #3 deadlock jika channel tidak di close
Reference:
Last updated
