任务编排的串行与并行自由切换;
任务编排的串行与并行自由切换;
现在已经实现了任务编排框架,用不同任务配置和任务构建器构造任务,并串行执行任务。
目前就缺少支持任务并行的方式执行,我现在想要能控制哪些任务是并行执行,哪些任务串行执行,自由编排。
共享 context 数据容器
由于现在有并行任务的需求,共享的context数据容器并行会产生写冲突。
当前所有 TaskStep 都直接写 TaskContext(如 context.texts、context.result),并行会产生线程不安全问题。
解决TaskContext产生线程不安全问题步骤:
- 保持一个通用的 TaskContext,并在并行阶段为每个步骤创建“上下文结果/子上下文”(context.output),
- 每个步骤写自己的结果,Task_runner最后合并回主上下文。
- 模板层还是负责拼装步骤,不需要维护多套上下文类型(即为每个不同的任务单独建立特有的context,如:files_context)。
“上下文结果/子上下文”(context.output) 目前主要是是给步骤之间传递中间结果用的(例如 texts),在runner处不显式调用。
浙公网安备 33010602011771号