From a64a2dc434b37cc09ab45eccca01c84d0f17bd6b Mon Sep 17 00:00:00 2001 From: xiaowei <403828237@qq.com> Date: Wed, 19 Jan 2022 12:26:38 +0800 Subject: [PATCH] =?UTF-8?q?add:=20signal=E9=80=80=E5=87=BA=E5=B8=A6context?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- channel/signal-context/main.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 channel/signal-context/main.go diff --git a/channel/signal-context/main.go b/channel/signal-context/main.go new file mode 100644 index 0000000..0cf0c35 --- /dev/null +++ b/channel/signal-context/main.go @@ -0,0 +1,30 @@ +package main + +import ( + "context" + "log" + "os" + "os/signal" + "syscall" + "time" +) + +func main() { + ctx, cancelFunc := context.WithTimeout(context.Background(), time.Second*2) + waitForFinish(ctx, cancelFunc) +} +//waitForFinish 带context的退出 +func waitForFinish(ctx context.Context, cancel context.CancelFunc) { + log.Println("waiting for finish...") + sigChan := make(chan os.Signal, 1) + signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) + select { + case <-ctx.Done(): + log.Println("ctx done") + break + case <-sigChan: + log.Println("got termination signal,canceling execution...") + cancel() + + } +}