2012-12-13 73 views
0

我有一個長時間運行的任務,它受益於多線程。Linq 2 SQL並行處理

隨着時間的推移,每個線程都會添加一個L2S實體,每個線程都需要訪問該實體中的屬性。

由於實體的單個實例的這種需求,所以很難爲每個線程使用多個數據環境。 有沒有一種可以實現這種情況的方法?

在使用Linq to SQL之前,我在經過一系列並行迭代後序列化爲XML。這工作得很好,但數據已經變得更加複雜,需要在SQL中提供關係/查詢;

一些附加信息: 該任務是分析視頻幀,以找到相似幀的序列。 有媒體,框架和鏡頭的表格。 具有多個幀和鏡頭的媒體 具有多個幀的鏡頭; 幀提取和比較是處理器密集型操作,並受益於多線程。

問題是,對於每個提取的幀。它需要將它自己與它之前和之後的幀進行比較。前/後幀可能來自單獨的線程。 因此,將幀和鏡頭插回到正在處理的單個媒體對象中意味着將來自多個數據上下文的實體合併爲1.

+0

你在這個對象上調用了什麼操作?線程之間共享哪種方式? – DHN

+0

你的實體是一個Singleton嗎?如果沒有,那就製作它。然後,任何數量的數據上下文都可以訪問它,而無需創建它的新實例。 –

+0

該實體表示包含來自多個表的數據的複雜對象。每個線程都會根據這些表中的現有數據和外部源數據向這些表中添加條目。 –

回答

0

不是解決並行Linq問題,而是改變了過程。

而不是試圖從多個線程同時訪問相同的項目列表。我已經拆分了項目列表併爲每個部分分配了一個線程。

這樣,每個線程都可以在自己的列表上執行操作,而不會互相碰撞。 然後我寫了一個整理方法來整理列表之間的連接。