2012-02-09 47 views
0

我正在研究分析來自多臺攝像機的視頻幀的系統。每個攝像頭將在發送視頻幀之前初始化一個WCF會話並分配一個GUID進行識別。隨着攝像機數量的增長,處理負載遠遠高於服務器可以實現的時間。因此,我正在寫一個班級來管理數據,因爲這些數據是從運動激活的攝像機發出的。管理流式視頻幀的隊列字典

來自攝像機的每幀必須與來自其他攝像機的幀並行分析。每個攝像機將用幀填充隊列以管理數據的FIFO性質。

隊列的管理讓我尋找想法。最初我打算創建一個字典並插入每個GUID-Queue對。在編寫代碼一段時間後,我開始認爲這不是最好的方法。有沒有人有什麼建議?

一些簡單的示例代碼:

namespace DataCollection 
{ 
    [ServiceBehavior(Name = "ClientDataView", InstanceContextMode = InstanceContextMode.Single)] 
    public class DataCollectionService : IDataCollectionService 
    { 
     //Dictionary of Guid-Queue pairs 
     CameraCollection CameraArray = new CameraCollection(); 

     public Guid RegisterCamera() 
     { 
      Guid ID = new Guid(); 
      WorkQueue FrameQueue = new WorkQueue(); 
      CameraArray.AddCamera(ID, FrameQueue) 
      return ID; 
     } 

     public bool SendData(Guid ID, FrameReady newFrame) 
     { 
      Frame dataFrame = newFrame.OpenFrame;     
      WorkQueue que = CameraArray.GetQueueReference(ID); 
      que.QueueFrame(dataFrame); 
      return true; 
     } 
    } 
} 

目前,如果我硬編碼家居的相機系統工作的定數。讓它適應不同數量的相機是更具挑戰性的。任何建議或意見,將不勝感激。

+0

基於你的'parallel'標籤我假設你在.NET 4上? – 2012-02-09 06:08:44

+0

@ M.Babcock是的,我正在.NET 4.0框架內開發。 – Ritz 2012-02-09 06:11:39

回答

0

.Net framewok 4有一個叫做Parallel的類。這個類有一個擴展方法Foreach。隨着你的收藏,你可以做一些像Parallel.Foreach(收藏,行動),

+0

看完Parallel課程後,我想我可能會最終使用它。它以當前的形式工作,但這是將數據處理變爲行動的更簡潔的方法。 – Ritz 2012-02-10 02:08:30

+0

很感謝。希望你成功 – user1010863 2012-02-17 13:14:14