我正在做一个项目,我正在并行化一个用 OpenCV 编写的对象跟踪器,使其适应跟踪多个对象。我正在使用 BOOST 库做多线程部分,它有一个非常干净的可移植多线程接口。
我有多个在多个线程上运行的跟踪功能实例,根据初始场景中检测到的对象数量产生。每个线程都有自己的工作循环,在其中逐帧跟踪对象。我的问题是:如何在每次循环迭代中收集结果以便保存它们?线程之间没有通信,但是在每个循环结束时,当一个帧处理完成时,我希望对每个线程的输出求和,这样我就可以对场景有一个总体视图,其中包含每个对象的结果追踪。
我看了一下boost::barrier
,这是一个好的开始,但是一旦我设法在循环结束时停止所有线程,我不知道如何收集结果。我需要一个额外的“收集者”线程吗?几年前我完成了我唯一的并行计算课程,所以我对并行计算有点生疏了:) 谢谢你的帮助!