C中图像接收和处理的并行操作

时间:2012-05-02 12:06:24

标签: c posix parallel-processing

我正在UBUNTU平台上工作,我从两个不同的摄像头(基于事件的捕获)接收图像(通过UDP)并处理图像(3D重建)。我想以这样的方式执行此操作:在图像接收操作正在进行时,图像处理操作应该并行开始。我知道我可以使用两个posix线程进行这两个并行操作。但我很困惑如何同步这两个线程,以便process()线程应该在receive()线程接收到至少一对图像之后准确开始。如果我使process()线程等待mutex条件(每次它将收到一对图像时由receive()线程设置),接收将比处理和receive()线程可以在process()线程处理单个图像对时多次设置条件。有什么可能是实现这一操作的更好方法?

1 个答案:

答案 0 :(得分:2)

在接收线程中的线程安全队列上处理您的图像(或指向每个图像的指针,或关于信息的结构,无论您的机制是什么)。在将项目排队后,使用semaphorepthread_cond来表示处理线程。

处理线程应该阻塞,直到它收到cond信号,并且只应在队列为空时阻塞。当该线程被解除阻塞时,它应该从队列中弹出一个图像并开始工作。当它完成处理时,它应该(在循环的顶部)决定是阻止还是处理另一个图像。如果队列为空,则阻塞。如果队列不为空,则会弹出一个图像并对其进行处理。