我有一个接收上下文并执行一些cpu绑定操作(如波纹管)的func。func DoSomeOperation(ctx context.Context){
CPUBoundWork1()
CPUBoundWork2()
CPUBoundWork3()
CPUBoundWork4()
}我想做的是在进行每个CPUBound调用之前检查是否已取消。如果取消,我想立即返回,而无需制作下一个功能。有什么办法可以做到这一点吗?Contextfunccall
1 回答
温温酱
TA贡献1752条经验 获得超4个赞
使用 ctx。错误()
if ctx.Err() == context.Canceled {
return
}
您也可以将 select 语句与 的一起使用。slicefunctions
例如:
ctx := ...
executors := []func(){...}
Loop:
for _,executor := range executors{
select {
case <-ctx.Done():
if ctx.Err() == context.Canceled {
break Loop
}
if ctx.Err() == context.DeadlineExceeded {
//do something else
}
default:
executor()
}
}
- 1 回答
- 0 关注
- 111 浏览
添加回答
举报
0/150
提交
取消