诊断脚本通常由第三方 SDK 异步执行,存在回调延迟、任务取消、设备断连、启动调用阻塞和服务退出等复杂情况。如果任务状态和对象生命周期处理不完整,容易出现重复终态、迟到回调、线程无法退出或对象释放后仍被访问等问题。本组件用于统一管理异步任务状态,并提升诊断服务在异常环境下的可靠性。
点击空白处退出提示
诊断脚本通常由第三方 SDK 异步执行,存在回调延迟、任务取消、设备断连、启动调用阻塞和服务退出等复杂情况。如果任务状态和对象生命周期处理不完整,容易出现重复终态、迟到回调、线程无法退出或对象释放后仍被访问等问题。本组件用于统一管理异步任务状态,并提升诊断服务在异常环境下的可靠性。
组件提供异步回调注册、终态去重、任务取消、OBD 断连处理、回调静默超时检测、后台线程退出和服务关停管理。任务运行期间可以持续接收进度事件,并在完成、失败或取消时统一收敛状态。组件还能够阻止迟到回调进入已经销毁的业务对象,在全局取消后为相关业务生成明确终态,并为周期任务保留下一轮自动恢复能力。
我负责异步任务状态模型、线程安全回调适配器、取消流程及回归测试。实现采用 shared_ptr 管理跨线程状态,通过 mutex 和 atomic 保护并发访问,使用终态闸门避免重复回调,并通过看门狗检测长时间无事件的任务。对于前端取消请求,保留原有请求报文,同时在后端执行全局取消;底层精准取消接口仅保留兼容代码。使用 GoogleTest 覆盖任务取消、周期流保护、迟到回调和服务退出等场景。



评论