首次提交:初始化项目代码
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
// 模拟耗时业务任务
|
||||
func businessTask(ctx context.Context, name string, duration time.Duration) {
|
||||
fmt.Printf("任务[%s]:启动,预计耗时%v\n", name, duration)
|
||||
|
||||
select {
|
||||
// 任务正常执行完成
|
||||
case <-time.After(duration):
|
||||
fmt.Printf("任务[%s]:执行完成\n", name)
|
||||
// 上下文超时/取消触发
|
||||
case <-ctx.Done():
|
||||
fmt.Printf("任务[%s]:被终止,原因:%v\n", name, ctx.Err())
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
// 创建全局超时上下文:2秒
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
|
||||
defer cancel()
|
||||
|
||||
// 任务1:1秒完成(正常)
|
||||
go businessTask(ctx, "正常任务", 1*time.Second)
|
||||
// 任务2:3秒完成(超时)
|
||||
go businessTask(ctx, "超时任务", 3*time.Second)
|
||||
|
||||
// 等待所有任务执行完毕
|
||||
time.Sleep(3 * time.Second)
|
||||
fmt.Println("主协程:任务流程全部结束")
|
||||
}
|
||||
Reference in New Issue
Block a user