Go随笔之优雅的退出

在Go语言中,优雅退出通常是指在接收到中断信号或其他终止信号时,让程序以一种安全、有序的方式退出,确保资源的正确释放和任务的完成。以下是常用的两种方式:

  • 使用wg包,可以在接收到sig信号时进行优雅退出。示例代码如下:
package main

import (
	"fmt"
	"os"
	"os/signal"
	"sync"
	"syscall"
)

func main() {
	var wg sync.WaitGroup
	wg.Add(1)

	go func() {
		defer wg.Done()

		// Wait for signals
		sigCh := make(chan os.Signal, 1)
		signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM)
		sig := <-sigCh
		fmt.Printf("Received signal: %v\n", sig)

	}()

	wg.Wait()
}

  • 使用channel,可以在接收到sig信号时进行优雅退出。示例代码如下:
package main

import (
	"fmt"
	"os"
	"os/signal"
)

func main() {
	signals := make(chan os.Signal, 1)
	done := make(chan bool, 1)

	//signal
	signal.Notify(signals, os.Interrupt)
	go func() {
		<-signals
		fmt.Println("Interrupt signal received")
		done <- true

	}()

	select {
	case <-done:
		fmt.Println("Exiting")
	}
}
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值