C#线程同步两个摄像头

时间:2011-04-15 20:47:02

标签: c# .net multithreading synchronization

我需要从两个摄像头捕捉图像并将它们组合在一起。

流程是这样的:

  • 两个线程,每个摄像头一个,对相机帧进行采样。
  • 每个人都将帧发送给第三个线程,即消费者。
  • 只有当消费者有两个框架处理它们时, 和
  • 释放捕获线程,以便它们可以获得下一帧。

有人可以概述我需要做什么吗? 我正在使用C#.Net 4.0

3 个答案:

答案 0 :(得分:1)

您是否尝试过阅读此文章?

http://msdn.microsoft.com/en-us/library/ms228964.aspx

所有关于使用.NET的线程同步4.非常简单。

答案 1 :(得分:0)

我会使用任何静态变量或数据库来存储单个摄像机的采样活动的进度。当两个摄像机将其各自的标志标记为已完成时,阅读器标志将消耗所有帧,重置这些标志。 Uplon重置其自己的标志,工作线程开始捕获下一帧。您还可以使用委托模式(处方者 - 订阅者)通过事件相互通知。

答案 2 :(得分:0)

我会给每个捕获工作者2个AutoResetEvent对象...一个用于在捕获完成时发出信号(A),另一个用于等待允许开始下一个捕获(B)......

工作程序例程将是以下循环:

捕获到本地缓冲区
信号A
等待B

消费者循环:

等待两个A
复制两个缓冲区
信号B b 处理缓冲区的副本