Questions tagged «parallel-extensions»


7
何时处置CancellationTokenSource?
该课程CancellationTokenSource是一次性的。快速浏览Reflector即可证明KernelEvent,(很可能是)非托管资源的使用。由于CancellationTokenSource没有终结器,因此如果不处理它,GC将不会这样做。 另一方面,如果您查看MSDN文章“ 托管线程中的取消”中列出的示例,则只有一个代码片段会处理该令牌。 用代码处理它的正确方法是什么? using如果不等待,则无法包装用于启动并行任务的代码。而且只有在您不等待的情况下取消才有意义。 当然,您可以ContinueWith通过Dispose电话添加任务,但这就是方法吗? 可取消的PLINQ查询如何处理,这些查询不同步回去,而只是在最后做一些事情?比方说.ForAll(x => Console.Write(x))? 可重用吗?可以将同一令牌用于多个调用,然后将其与主机组件(例如UI控件)一起处置吗? 因为它没有像一Reset对清理方法IsCancelRequested和Token字段我想这是不能重复使用,这样每次启动一个任务(或PLINQ查询),你应该创建一个新的。是真的吗 如果是,我的问题是Dispose在那么多CancellationTokenSource实例上处理的正确和推荐策略是什么?

6
我应该使用ThreadPools还是Task Parallel Library进行IO绑定操作
在我的一个有点像聚合器的项目中,我从网络上解析提要,播客等。 如果我使用顺序方法,那么考虑到大量的资源,要花所有的时间来处理所有这些资源(由于网络问题和类似的东西); foreach(feed in feeds) { read_from_web(feed) parse(feed) } 因此,我想实现并发性,无法决定是否应该基本上使用ThreadPools处理工作线程,还是仅依靠TPL对其进行排序。 ThreadPools肯定会通过辅助线程为我完成工作,并且我会得到期望的结果(在多核CPU环境中,其他内核也将被利用)。 但是我仍然想考虑TPL,因为它是推荐方法,但我对此有些担心。首先,我知道TPL使用ThreadPools,但增加了决策层。我最担心的是存在单核环境的情况。如果我没记错的话,TPL开头的工作线程数等于可用的CPU核心数。我确实担心TPL对于受IO约束的案例会产生与顺序方法相似的结果。 因此,对于IO绑定操作(以我为例,它是从Web上读取资源),最好是使用ThreadPools来控制事物,还是最好仅依赖TPL?TPL也可以用于IO绑定方案吗? 更新:我主要担心的是-在单核CPU环境中,TPL会像顺序方法一样工作还是会提供并发性?我已经在阅读《使用Microsoft .NET进行并行编程》,因此这本书却找不到确切的答案。 注意:这是我以前的问题的重新措辞[可以同时使用线程并发和并行性吗?]这句话是错误的。

2
Reactive Framework,PLINQ,TPL和并行扩展如何相互关联?
至少自.NET 4.0发布以来,Microsoft似乎在支持并行和异步编程上付出了很多努力,并且似乎已经出现了许多与此相关的API和库。特别是最近到处都经常提到以下奇特的名字: 反应框架 PLINQ(平行LINQ), TPL(任务并行库)和 并行扩展。 现在它们似乎都是Microsoft产品,它们似乎都针对.NET的异步或并行编程方案。但是,目前还不清楚它们实际上是什么以及它们之间如何相互联系。有些可能实际上是同一回事。 简而言之,任何人都可以直接确定什么是记录吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.