实现思路
- 定义一个函数,该函数接收初始上下文信息作为参数,并返回另一个函数(闭包)。
- 闭包函数负责实际的任务处理逻辑,在处理过程中可以根据需要修改上下文信息。
- 在并发执行闭包函数时,每个闭包函数都有其独立的上下文信息。
代码示例
package main
import (
"context"
"fmt"
"sync"
)
// createTask 创建一个任务处理函数
func createTask(ctx context.Context, initialValue int) func() {
value := initialValue
return func() {
// 模拟任务处理的不同阶段
for i := 0; i < 3; i++ {
// 根据阶段更新上下文信息
value = value + i
fmt.Printf("Task with context value %d at stage %d\n", value, i)
}
}
}
func main() {
var wg sync.WaitGroup
ctx := context.Background()
// 创建并启动多个并发任务
for i := 0; i < 3; i++ {
task := createTask(ctx, i*10)
wg.Add(1)
go func() {
defer wg.Done()
task()
}()
}
wg.Wait()
}