對於我的一個項目來說,這是一種內容聚合器,我想介紹併發性和可能的並行性。首先,這似乎毫無意義,因爲併發性和並行性採用不同的方法。 (通過線程進行併發會引入即時併發,而並行則會提供潛力)。是否可以一起使用線程併發和並行?
所以爲了更好地解釋我的問題,讓我總結一下我的問題集。
由於我的項目是一個內容聚合器(聚合提要,播客和類似的東西),它基本上從網上讀取數據,解析它們以返回有意義的數據。
因此,現在我採取了一種非常簡單的順序方法。假設我們有一些我們必須解析的提要。
foreach(feed in feeds)
{
read_from_web(feed)
parse(feed)
}
因此,與順序方法花費時間解析所有的飼料和處理它們在很大程度上取決於不僅解析器代碼,但以從網絡XML源所需的時間。我們都知道,從網上閱讀信息來源可能需要不同時間(因爲網絡條件和類似問題)。所以爲了加速代碼,我可以採用一種工作線程的方法,它將引入一個立即併發;
所以定義工作線程的數量可以採取飼料&解析同時(這將肯定加速了整個過程 - 當我們將看到的過網等待數據的影響較小) 。
這一切都好,直到我的目標受衆主要運行多核cpus - 因爲他們是遊戲玩家。
我想在處理內容時也使用這些內核,所以開始閱讀潛在的並行性http://oreilly.com/catalog/0790145310262。我還沒有完成閱讀它,並不知道這是否已經討論,但我很癡迷於此,並希望通過stackoverflow問得到一個整體的想法。
因此,作爲本書介紹潛在的並行:潛在的並行意味着你的程序是這麼寫的,它運行速度更快時並行硬件可用和大致相同爲等效順序程序時,它不是 。
所以真正的問題是,雖然我使用工作線程的併發性,我仍然可以使用可能的並行性? (在工作線程上運行我的提要解析器,並將它們分發給cpu核心 - 如果cpu支持多核心的話當然)
我實在看不出區別。當多個核心可用時工作線程並行執行 – jalf 2011-03-05 12:53:48
請問有沒有可以提供給我的資源?我想詳細閱讀此內容以獲得更好的理解。 – HuseyinUslu 2011-03-05 13:12:07
我與賈爾夫在此;如果某些東西並行運行,那麼它同時發生。 – 2011-03-05 13:32:24