From c47b68621050673abf6347dae088a55e76b86561 Mon Sep 17 00:00:00 2001 From: Sebastian Steger Date: Wed, 20 Aug 2025 11:36:42 +0000 Subject: [PATCH] deadlock --- go/05-concurrency/deadlock.go | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/go/05-concurrency/deadlock.go b/go/05-concurrency/deadlock.go index 931c201..56c7e55 100644 --- a/go/05-concurrency/deadlock.go +++ b/go/05-concurrency/deadlock.go @@ -1,17 +1,43 @@ package main -func print(ci <-chan int) { - //TODO: implement +import ( + "fmt" + "sync" + "time" +) + +func printChannel(ci <-chan int, done chan<- bool) { + defer func() { done <- true }() + for i := range ci { + time.Sleep(100 * time.Millisecond) + fmt.Println(i) + } +} + +func printWaitgroup(ci <-chan int, wg *sync.WaitGroup) { + defer func() { wg.Done() }() + for i := range ci { + time.Sleep(100 * time.Millisecond) + fmt.Println(i) + } } func main() { c := make(chan int) + //done := make(chan bool) + //go printChannel(c, done) + + wg := sync.WaitGroup{} + wg.Add(1) + go printWaitgroup(c, &wg) + c <- 1 c <- 2 c <- 3 close(c) - print(c) + //<-done + wg.Wait() }