万能的CSDN,我遇到这样的个问题:
我做目标跟踪算法,跟踪器已经封装成一个类了,提供接口。该类工作时实时的输出目标的局域矩形框的位置坐标。在一个段视频中,当出现新的目标,我就要从一个集合里获取一个跟踪器(如果集合里咩有,就新建一个),用来跟踪新出现的目标,当某个目标不再出现在视频中的时候,就把这个跟踪器放回集合中。每一个跟踪器需要开启一个线程。当跟踪器在跟踪目标时候,需每处理一帧图像后,把目标的坐标通知到UI部分显示。
以上是我的问题描述,请问如何设计这样一个多线程程序呢,谢谢啦,我只有35分了。

解决方案 »

  1.   

    我问题是,多个跟踪器,都需要向UI发送一个目标的位置坐标,UI负责把这些坐标绘制处理,那我这个UI的线程,和每个跟踪器的线程怎么同步比较好呢?我想的是,UI接收到所有活动跟踪器的数据后显示一次,没有接收到就等待;显示后就通知各个跟踪器跟踪下一帧数据;跟踪器线程们接收到跟踪下一帧数据命令后,开始跟踪,然后结果发个UI,并等待下次命令。这样设计合理吗?程序实时性能非常重要
      

  2.   


    在你的跟踪器类里面,定义一个坐标成员变量,让UI线程来取好了。反正一个读、一个写,不会产生冲突,跟踪器处理速度突发性的落后了的话,UI线程取旧一点的数据也不会有太大问题,下一帧就能取到最新的了(当然前提是CPU最终是能处理过来这些任务的)