设计用于处理对象的管道

时间:2013-02-22 13:25:31

标签: c++ pipeline

最近我在一次采访中被问到一个简单的设计问题:

假设有一些数据需要以流水线方式处理以提高效率。假设有五个任务需要完成,每个任务的输出都作为下一个任务的输入,一旦一个任务完成一个对象,它就可以处理下一个任务。

如何设计该系统?如何触发下一个任务?如何将一项任务的数据提供给下一个任务?

有什么想法吗?这是在C ++访谈中提出的。因此,面向C ++的设计会很好。

1 个答案:

答案 0 :(得分:3)

这是一个面试问题,因此他们希望您大声思考并展示您的体验深度。没有人“设计”甚至“回答”,因此你应该尽可能多地考虑不同的案例。

你可以花一整本关于管道设计的书,所以我不会(也不能)列出你想要注意的所有方面,但这里有一些常见的:

  • 注意瓶颈
  • 在管道任务之间建立通用协议
  • 管道可以拒绝输入,甚至可以向后传递它们,你如何处理这个
  • 是否需要进行大量类型转换
  • 您是否可以对其进行并行化,并在第一个项目完成之前将更多数据提供给管道