下記のコードを実行するとデッドロックが発生してしまいます。
どなたか原因がわかる方はいますか?
よろしくお願いします。
go
1package main 2 3import ( 4 "fmt" 5 "sync" 6 7 8) 9 10func main() { 11 ch1 := make(chan int) 12 var ch2 chan string 13 var wg sync.WaitGroup 14 15 wg.Add(1) 16 go func() { 17 18 ch1 <- 100 19 fmt.Println("done1") 20 wg.Done() 21 }() 22 23 wg.Add(1) 24 go func() { 25 26 ch2 <- "happy" 27 fmt.Println("done2") 28 wg.Done() 29 }() 30 31 wg.Wait() 32 fmt.Println("done all") 33 fmt.Println(<-ch1) 34 fmt.Println(<-ch2) 35 36 37} 38
error
1fatal error: all goroutines are asleep - deadlock! 2 3goroutine 1 [semacquire]: 4sync.runtime_Semacquire(0xc000100018) 5 /usr/local/go-faketime/src/runtime/sema.go:56 +0x45 6sync.(*WaitGroup).Wait(0xc000100010) 7 /usr/local/go-faketime/src/sync/waitgroup.go:130 +0x65 8main.main() 9 /tmp/sandbox016994360/prog.go:35 +0x105 10 11goroutine 18 [chan send]: 12main.main.func1(0xc00010c000, 0xc000100010) 13 /tmp/sandbox016994360/prog.go:18 +0x3b 14created by main.main 15 /tmp/sandbox016994360/prog.go:16 +0xb1 16 17goroutine 19 [chan send (nil chan)]: 18main.main.func2(0x0, 0xc000100010) 19 /tmp/sandbox016994360/prog.go:26 +0x3b 20created by main.main 21 /tmp/sandbox016994360/prog.go:24 +0xf3 22 23Program exited: status 2.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/24 09:34