From 03d98acdd7313106a885f57d343a18eda6a8c326 Mon Sep 17 00:00:00 2001 From: GrosQuildu Date: Thu, 11 Apr 2024 13:23:26 +0200 Subject: [PATCH] add todoruleid testcase --- go/hanging-goroutine.go | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/go/hanging-goroutine.go b/go/hanging-goroutine.go index 16533d3..5da028e 100644 --- a/go/hanging-goroutine.go +++ b/go/hanging-goroutine.go @@ -11,7 +11,7 @@ var ( ) func main() { - req5_FP(1) + req6(1, false) fmt.Println("Result: ", result) fmt.Println("Goroutines (must be 1 for FPs):", runtime.NumGoroutine()) } @@ -152,6 +152,32 @@ func req5_FP(timeout time.Duration) { } } +func req6(timeout time.Duration, doclose bool) { + ch := make(chan string) + tick := time.Tick(100 * time.Millisecond) + quit := time.After(2 * time.Second) + // todoruleid: hanging-goroutine + go func() { + newData := test() + ch <- newData // block + }() + for { + select { + case <-tick: + fmt.Print("|") + case <-quit: + if doclose { + result = <- ch + } + fmt.Println("\nquit") + return + default: + fmt.Print(".") + time.Sleep(50 * time.Millisecond) + } + } +} + func test() string { time.Sleep(time.Second * 2)