code kata 230829

This commit is contained in:
VicRen
2023-08-29 16:32:55 +08:00
parent 45f6b47eba
commit 8e59e43da1
2 changed files with 143 additions and 0 deletions

46
code_kata_230828/main.go Normal file
View File

@@ -0,0 +1,46 @@
package main
import (
"context"
"fmt"
"time"
)
func main() {
ch1 := make(chan struct{})
ch2 := make(chan struct{})
ctx, _ := context.WithTimeout(context.Background(), 2*time.Second)
go func() {
go f1(ch1)
select {
case <-ctx.Done():
fmt.Println("f1 timeout")
break
case <-ch1:
fmt.Println("f1 done")
}
}()
go func() {
go f2(ch2)
select {
case <-ctx.Done():
fmt.Println("f2 timeout")
break
case <-ch2:
fmt.Println("f2 done")
}
}()
time.Sleep(5 * time.Second)
}
func f1(in chan struct{}) {
time.Sleep(1 * time.Second)
in <- struct{}{}
}
func f2(in chan struct{}) {
time.Sleep(3 * time.Second)
in <- struct{}{}
}