2012-03-08 100 views
0

二叉樹: 例如,如果我們需要並行處理樹數據結構。我們可以產生一個線程來處理左側節點,另一個線程處理右側節點。現在兩者都可以獨立運行在相同的數據結構上。什麼樣的數據結構可以實現並行處理

對於鏈表,當然不可能有同樣的並行性。

我在想,如果還有其他數據結構,那麼我們就可以靈活地實現類似於二叉樹的並行性了嗎?

+0

這有什麼錯穿越到一個鏈表的中間,和產卵兩個線程他們在平行元件工作?如果你的「處理」足夠複雜,那可能是一場勝利。 – dasblinkenlight 2012-03-08 17:16:59

+0

只需將鏈接列表分塊。平行度方面的微不足道的擔憂。如果在處理過程中有別的東西在寫給你的樹,那麼這個方便地左右分離的事實不會有幫助嗎? – 2012-03-08 17:19:58

+0

取決於你所說的「處理」的意思是:在二叉樹最常見的操作(查找,插入,刪除...忽略再平衡)不能並行化有意義由於鴻溝和征服二叉樹的性質。 – 2012-03-08 17:23:57

回答

2

什麼類型的並行性?你可以總是平行讀取,但是寫入更復雜。如果被改變的唯一事情是存儲在節點的數據,因此沒有理由,你爲什麼不能通過爲每個單獨的節點,而不是整個列表鎖定並行化LinkedListArray。但是如果結構的連接受到影響,那麼還有更多事情需要擔心。

答案取決於你想要做什麼以及你如何設置鎖定,條件等,但沒有任何內在的可並行或不可並行。

+0

我認爲,在這個答案的L2你的意思是不能,而不是可以嗎? – 2012-03-08 17:43:42

+0

你是正確的先生。固定 – twain249 2012-03-08 18:15:20

0

當你談論並行處理時,我腦海中浮現出兩件事1)任務並行2)數據並行。我會在這裏談論第二個。

檢查樹木的超集:圖形。許多基於智慧人羣/集體智慧的巨大數據問題可以模擬爲圖表。使用Map Reduce框架對Graph進行並行處理將會讓你感興趣。

相關問題