对于我的一个项目来说,这是一种内容聚合器,我想介绍并发性和可能的并行性。首先,这似乎毫无意义,因为并发性和并行性采用不同的方法。 (通过线程进行并发会引入即时并发,而并行则会提供潜力)。是否可以一起使用线程并发和并行?
所以为了更好地解释我的问题,让我总结一下我的问题集。
由于我的项目是一个内容聚合器(聚合提要,播客和类似的东西),它基本上从网上读取数据,解析它们以返回有意义的数据。
因此,现在我采取了一种非常简单的顺序方法。假设我们有一些我们必须解析的提要。
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