dingdayu-go-async 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
dingdayu-go-async 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
dingdayu-go-async 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache-2.0
开发语言 Google Go 查看源码 »
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发网络工具包
开源组织
地区 国产
投 递 者 dingdayu
适用人群 未知
收录时间 2020-11-04

软件简介

Go 安全异步任务

基于 Go 的安全异步包。

安装

go get github.com/dingdayu/async/v2

示例

package main

import (
 "context"
 "fmt"
 "os"
 "os/signal"
 "sync"
 "syscall"
 "time"

 "github.com/dingdayu/async/v2"
)

type ExampleAsync struct {
}

// OnPreRun: 运行之前的调用, panic 会导致注册失败
func (a ExampleAsync) OnPreRun() {
 fmt.Printf("\u001B[1;30;42m[info]\u001B[0m ExampleAsync 注册成功,开始运行!\n")
}

// Name: 异步任务的名称,需要在进程内唯一,否则会被替换
func (a ExampleAsync) Name() string {
 return "example"
}

// Handle: 异步任务的核心逻辑,通过 for 进行巡航,通过 context 进行安全退出
func (a ExampleAsync) Handle(ctx context.Context, wg *sync.WaitGroup) {
 defer wg.Done()

 for {
  select {
  default:
   // todo:: Logical unit
   time.Sleep(3 * time.Second)
   fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
  case <-ctx.Done():
   return
  }
 }
}

// OnShutdown: 在退出前并行调用
func (a ExampleAsync) OnShutdown(s os.Signal) {
 fmt.Printf("\u001B[1;30;42m[info]\u001B[0m ExampleAsync 接收到系统信号[%s],准备退出!\n", s.String())
}

func main() {
 // 处理系统 SIGINT and SIGTERM 信号.
 ch := make(chan os.Signal)
 signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)

 ayc := async.NewAsync(context.Background(), ch)

 _ = ayc.Register(ExampleAsync{})

 ayc.Wait()
 fmt.Println("[1;30;42m[info]\u001B[0m Task exited")
}
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣 发布并加入讨论🔥
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
0 评论
4 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部